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 powertop
m'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=60
pour / 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 fsck
me 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?