Avantages / inconvénients de l'augmentation du «commit» dans fstab

14

J'ai fait de nombreuses optimisations obscures du système dans le passé, mais je me suis débarrassé de la plupart d'entre elles après powertopm'avoir dit que je devrais mettre mes ports USB en suspension automatique , ce qui les a forcés à un sommeil éternel, et aussi après avoir réalisé les avantages d'une permutabilité plus élevée .

Mais aujourd'hui, en regardant /etc/fstab, j'ai remarqué que j'avais défini l'option commit=60pour / et / home . Je me souviens que c'était une optimisation pour les ordinateurs portables, afin de réduire la quantité d'écritures sur le disque, économisant ainsi la batterie. Mais ensuite, je suis devenu préoccupé par le fait que cela pourrait entraîner une perte de données (parfois ma batterie se déconnecte, puis au démarrage fsckme parle de quelques inodes orphelins).

En cherchant une explication pour cette option, je suis arrivé aux explications suivantes (la seconde semble contredire ma compréhension précédente):

$ man mount | awk '/commit=/,/^$/'
commit=nrsec
    Sync all data and metadata every nrsec seconds. The default value is 5 seconds.
    Zero means default.

https://forums.gentoo.org/viewtopic-p-4088752.html

commit = 60 arrête la priorisation "immédiate" (par défaut de 5 secondes) des écritures des surlectures, mettant en cache les écritures pendant quelques secondes de plus. C'est bon dans le cas de lectures et d'écritures lourdes mélangées, où l'utilisateur souhaite que les lectures soient prioritaires, de sorte que le processeur puisse être occupé plutôt que de faire une pause en attendant la fin des écritures avant de pouvoir continuer la lecture.

Un exemple concret que j'ai vu attend plusieurs secondes que le menu déroulant Gnome apparaisse, sans raison apparemment. La raison était que le disque était en train d'écrire, donc le CPU devait attendre la fin de l'écriture avant de pouvoir obtenir toutes les données du disque pour pouvoir afficher le menu.

Que fait vraiment commit ? Y a-t-il vraiment des avantages à l'augmenter (comme la réactivité et les économies d'énergie)? Peut-il réellement provoquer une perte de données?

Teresa e Junior
la source

Réponses:

12

Que fait vraiment commit ?

Je pense que l'une des meilleures explications a été donnée ici par allquixotic .

Y a-t-il vraiment des avantages à l'augmenter (comme la réactivité et les économies d'énergie)? Peut-il réellement provoquer une perte de données?

Selon la documentation officielle ext4 :

Ext4 peut être invité à synchroniser toutes ses données et métadonnées toutes les secondes. La valeur par défaut est 5 secondes. Cela signifie que si vous perdez votre puissance, vous perdrez autant que les 5 dernières secondes de travail (votre système de fichiers ne sera cependant pas endommagé, grâce à la journalisation). Cette valeur par défaut (ou toute valeur faible) nuira aux performances, mais elle est bonne pour la sécurité des données . Le mettre à 0 aura le même effet que de le laisser par défaut (5 secondes). La définition de valeurs très élevées améliorera les performances .

L'augmentation de la commitvaleur signifie que vous risquez de perdre autant que les N dernières secondes de travail (où N = intervalle de validation), bien que la plupart du temps cela ne se produira pas car le logiciel peut toujours appeler fsync () et obtenir ses données écrites sur le disque, remplaçant la paramètre de validation. Vous pouvez le voir comme «tout écrire sur le disque au moins aussi souvent» . 1
D'un autre côté, cela signifie moins d'écritures (ce qui le rend très populaire auprès des utilisateurs de SSD) et de meilleures performances (plusieurs écritures sont combinées en une seule écriture plus grande, les mises à jour des écritures précédentes dans le délai de validation sont annulées).
En ce qui concerne les économies d'énergie, selon cette page , il s'avère que l'augmentation de la commitvaleur actuelle n'économise pas d'énergie.

don_crissti
la source
1
Je pense qu'une certaine économie d'énergie se produit en raison du fait que l'étendue + l'allocation retardée peut mieux optimiser le HDD. Mais ce n'est probablement pas significatif.
peterh