Eu fiz muitas otimizações obscuras do sistema no passado, mas me livrei da maioria delas depois de powertop
me 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=60
para / 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, fsck
me 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?