• [^] # Re: confus pour moi

    Posté par . En réponse au journal Canonical aurait des actions de fabricants de disques durs!. Évalué à 10.

    Je vais essayer d'expliquer un peu plus en détail ce que j'ai remarqué là dessus. tout d'abords le décors : Je n'utilise pas *ubuntu, mais des mandrakes/mandriva, en particulier sur des laptops depuis ~2000. J'ai remarqué ce problème de load/unload fréquents dès 2003 suite au bruit agaçant que fait le disque lorsqu'il décharge les têtes.

    Pour commencer, que signifie décharger les têtes ? C'est les déplacer hors de la surface du disque pour 1. économiser l'énergie du système de positionnement de têtes et 2. mettre le disque en sécurité lors de chocs/vibrations de moyenne importance. En ce sens, cela ressemble un peu au parquage des têtes à l'arrêt du disque mais, disons, dans une moindre mesure. De ce fait, le déchargement des têtes d'un disque de laptop est beaucoup plus rapide que celui d'un desktop. Ce temps est géré directement par le firmware du disque et, selon les modèles, on a un peu d'influence dessus via le paramètre -B de hdparm, ou pas du tout. Tout dépends du constructeur.

    L'autre pendant du problème est le mécanisme de cache en écriture du noyau, qui (sans que je sache expliquer dans le détail) n'écrit pas tout d'un coup sur le disque, mais grosso-modo, en deux fois. Ceci est parfairement visible avec un utilitaire comme gkrellm qui permet de tracer les accès disque. Avec les valeurs par défauts, on constate donc la séquence suivante lors d'une écriture peu importante :
    - Chargement de la tête
    - Ecriture
    - Déchargement de la tête
    - Chargement de la tête
    - Vidage du cache
    - Déchargement de la tête
    Attention, contrairement a ce que laisse croire le troll, ceci se produit indépendamment de l'activation du laptop_mode !!

    C'est évidement contre-productif. La solution contre ça est de jouer sur les paramètres vm/dirty_expire_centisecs et vm/dirty_writeback_centisecs qui permettent, au choix de raccourcir le délai entre l'écriture et le vidage du cache, soir au contraire, de tolérer un cache très long. Je suis en partisan des caches très long sur les laptops : Pas de risque de coupure de courant, et une fois tous les drivers bien optimisés, les plantages hard sont très rare. Donc, je prends le risque et j'utilise 1h (oui, vous avez bien lu !), ie vm/dirty_expire_centisecs=vm/dirty_writeback_centisecs=360000. Bon, c'est un réglage extrème, 5 ou 10minutes sont très bien aussi, hein ;)

    Ensuite, le laptop_mode aide bien en la matière, car il permet de grouper les accès en écriture juste après que le disque ait été réveillé (s'il était en veille) par un accès en lecture. Donc laptop_mode + long cache en écriture + gros cache en lecture = on travaille quasiment qu'en RAM, avec des gains de rapidité importants en plus des gains d'autonomie sur batterie.

    En pratique, je préconise l'installation de laptop_mode, et tous les réglages se font dans /etc/laptop-mode/laptop-mode.conf. Voici les réglages clef que j'utilise :
    ENABLE_LAPTOP_MODE_ON_BATTERY=1
    ENABLE_LAPTOP_MODE_ON_AC=1
    ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED=1
    Au diable les compromis !!

    MINIMUM_BATTERY_CHARGE_PERCENT=3
    DISABLE_LAPTOP_MODE_ON_CRITICAL_BATTERY_LEVEL=1
    Ça, c'est pour se pouvoir dépécher de vider le cache en écriture quand la batterie est presque à plat

    LM_BATT_MAX_LOST_WORK_SECONDS=3600
    LM_AC_MAX_LOST_WORK_SECONDS=3600
    C'est ce paramètre qui va fixer les vm/dirty_machins via le script de laptop_mode

    CONTROL_HD_IDLE_TIMEOUT=1
    LM_AC_HD_IDLE_TIMEOUT_SECONDS=300
    LM_BATT_HD_IDLE_TIMEOUT_SECONDS=20
    Les temps mise en veille du disque (arrêt rotation)

    CONTROL_HD_POWERMGMT=1
    BATT_HD_POWERMGMT=1
    LM_AC_HD_POWERMGMT=255
    NOLM_AC_HD_POWERMGMT=255
    Contrôle le paramètre -B de hdparm : 255 si secteur, 1 si batterie. En mode 1, le disque s'arrête après seulement quelques secondes d'activité ! A n'utiliser qu'en connaissance de cause !

    CONTROL_HD_WRITECACHE=1
    NOLM_AC_HD_WRITECACHE=0
    NOLM_BATT_HD_WRITECACHE=0
    LM_HD_WRITECACHE=1
    On active le cache en écriture si laptop mode est actif, on le désactive sinon. Utilisé en combinaison avec la désactivation auto si <3% de batterie pour vider les caches avant la panne sèche

    Voilà, c'est tout pour la partie HDD de laptop_mode.

    Ensuite, pour gagner encore plus en autonomie batterie ainsi qu'en durée de vie du hdd, je minimise les écriture sur disque en :
    - montant /tmp en ram (tmpfs)
    - liant /var/tmp et ~/tmp vers /tmp
    - plançant dans ~/tmp les répertoires gconfd-user, kdecache-user, kde-user, ksocket-... etc, bref tout les trucs qui ne nécessitent pas vraiment de se conserver d'une session à l'autre, et qui génère bcp de traffic en écriture.

    Voilà voilà ! En retour d'expérience, mon précédent laptop (machine principale de travail) a fonctionné 14000h en 5ans, et j'ai "usé" 1,5 hdd : Le 1er changé préventivement au bout de 4ans après qu'il ait atteint sa limite de design pour le load/unload cycle, le deuxième est toujours en service !

    Merci a ceux qui m'ont lu jusqu'au bout !!