Vantagens / desvantagens de aumentar o "commit" no fstab

14

Eu fiz muitas otimizações obscuras do sistema no passado, mas me livrei da maioria delas depois de powertopme dizerem que eu deveria configurar minhas portas USB para suspensão automática , o que as forçou a um sono eterno, e também depois que percebi os benefícios de uma maior troca .

Mas hoje, enquanto olhava /etc/fstab, notei que havia definido a opção commit=60para / e / lar . Lembro que essa foi 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 é desconectada e, na inicialização, fsckme fala sobre alguns inodes órfãos).

Enquanto procurava 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 interrompe a priorização "imediata" (padrão de 5 segundos) de gravações de sobre leituras, armazenando em cache as gravações por mais alguns segundos depois. Isso é bom na situação de leituras e gravações pesadas combinadas, em que o usuário deseja que as leituras tenham prioridade, para que o processador possa ser mantido ocupado em vez de pausar enquanto aguarda a conclusão das gravações antes de poder continuar lendo.

Um exemplo do mundo real que eu já vi está aguardando vários segundos pelo menu suspenso do Gnome, aparentemente sem motivo. O motivo foi que o disco estava ocupado gravando, portanto, a CPU teve que aguardar a gravação terminar para poder obter todos os dados do disco para poder exibir o menu.

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

Teresa e Junior
fonte

Respostas:

12

O que o commit realmente faz?

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

Há realmente vantagens em aumentá-lo (como capacidade de resposta e economia de energia)? Pode realmente causar perda de dados?

De acordo com a documentação oficial ext4 :

Pode-se dizer ao Ext4 para sincronizar todos os seus dados e metadados a cada segundo 'nrsec'. O valor padrão é 5 segundos. Isso significa que, se você perder o poder, perderá os últimos 5 segundos de trabalho (o sistema de arquivos não será danificado, graças ao registro no diário). Esse valor padrão (ou qualquer valor baixo) prejudicará o desempenho, mas é bom para a segurança dos dados . Configurá-lo como 0 terá o mesmo efeito que deixá-lo no padrão (5 segundos). Configurá-lo para valores muito grandes melhorará o desempenho .

Aumentar o commitvalor significa que você pode perder até os N segundos de trabalho mais recentes (onde N = intervalo de consolidação), embora na maioria das vezes isso não aconteça, pois o software ainda pode chamar fsync () e gravar seus dados em disco, substituindo o confirmar configuração. Você pode vê-lo como "grave tudo em disco, pelo menos com tanta frequência" . 1
Por outro lado, significa menos gravações (o que a torna bastante popular entre os usuários ssd) e melhor desempenho (várias gravações são combinadas em uma única gravação maior, as atualizações nas 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 de commitvalor não economiza energia.

don_crissti
fonte
1
Eu acho que alguma economia de energia acontece devido ao fato de que as extensões + alocação atrasada podem otimizar muito melhor o HDD busca. Mas provavelmente não é significativo.
peterh - Restabelece Monica