Vantagens / desvantagens de aumentar o “commit” no fstab

12

Já fiz muitas otimizações obscuras do sistema no passado, mas me livrei da maioria delas depois que powertop me disse que eu deveria definir minhas portas USB para autosuspend , o que as obrigava a uma eternidade dormir, e também depois que eu percebi os benefícios de um maior swappiness .

Mas hoje, ao olhar para /etc/fstab , percebi que tinha definido a opção commit=60 para / e / home . Lembro-me que esta era uma otimização para laptops, para reduzir a quantidade de gravações no disco, economizando bateria. Mas fiquei preocupado que isso pudesse causar perda de dados (às vezes minha bateria fica desconectada e, em seguida, na inicialização, fsck me informa sobre alguns inodes órfãos).

Enquanto procurava por uma explicação para esta opção, cheguei às seguintes explicações (a segunda parece contradizer meu entendimento anterior):

$ 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 stops the "immediate" (default of 5 seconds) prioritization of writes of over reads, caching the writes for a few more seconds later. This is good in the situation of heavy reads and writes mixed together, where the user wants the reads to take priority, so that the processor can be kept busy rather than pause while waiting for the writes to finish before it can continue reading.

A real-world example I have seen is waiting several seconds for the Gnome pull-down menu to appear, for seemingly no reason. The reason was that the disk was busy writing, so the CPU had to wait for the writing to finish before it could get all the data from the disk to be able to show the menu.

O que commit realmente faz? Existem realmente vantagens de aumentá-lo (como capacidade de resposta e economia de energia)? Pode realmente causar perda de dados?

    
por Teresa e Junior 16.09.2014 / 01:30

1 resposta

11

What does commit really do?

Acho que uma das melhores explicações foi dada aqui por allquixotic .

Are there really advantages of increasing it (like responsiveness and power savings)? May it actually cause data loss?

De acordo com a documentação oficial do ext4 :

Ext4 can be told to sync all its data and metadata every 'nrsec' seconds. The default value is 5 seconds. This means that if you lose your power, you will lose as much as the latest 5 seconds of work (your filesystem will not be damaged though, thanks to the journaling). This default value (or any low value) will hurt performance, but it's good for data-safety. Setting it to 0 will have the same effect as leaving it at the default (5 seconds). Setting it to very large values will improve performance.

Aumentar o valor commit significa que você pode perder tanto quanto os últimos N segundos de trabalho (onde N = confirmar o intervalo) embora na maioria das vezes isso não aconteça como o software ainda pode chamar fsync () e obter seus dados gravados no disco, substituindo a configuração de confirmação. Você poderia olhar para ele como "escrever tudo no disco pelo menos com frequência" . 1
Por outro lado, significa menos gravações (o que torna bastante popular entre os usuários do ssd) e melhor desempenho (várias gravações são combinadas em uma única gravação maior, as atualizações das gravações anteriores no período de confirmação são canceladas). Quanto à economia de energia, de acordo com esta página , verifica-se que, atualmente, o aumento do valor de commit não economize energia.

    
por 18.10.2014 / 01:14