Como posso verificar se meu sistema Linux está configurado para sincronizar alterações no disco imediatamente?

Como posso verificar se meu sistema Linux está configurado para sincronizar alterações no disco imediatamente?

Percebi que um mecanismo de indexação no meu sistema,lembrarusa muito disco quando está funcionando e que houve atividade no disco sempre que alterei a configuração de um complemento do Firefox. Não sei se esses aplicativos foram projetados para sincronizar alterações imediatamente no disco ou se isso se deve a alguma configuração na configuração do sistema.

Existe uma maneira de descobrir.

PS. deixei uma pergunta noRecomendações de softwaresobre o problema recoll/xapian.

Responder1

Verifique se o sistema de arquivos aparece na saída do arquivo grep -w sync /proc/mounts. Spoiler: a resposta é não. Montar um sistema de arquivos com sincronização imediata é extremamente lento. (Também causa muitas pequenas gravações, o que reduziria a vida útil dos dispositivos flash.)

Alguns aplicativos liberam os dados para o disco chamandofdatasync. Infelizmente, as APIs Unix não são bem projetadas quando se trata de resiliência¹. Do ponto de vista da aplicação, algumas alterações precisam ser resilientes, porque a aplicação transmitiu dados para uma máquina remota indicando que a alteração foi salva. Neste caso fdatasyncé a interface correta. Mas muitos aplicativos precisam de algo diferente, ou seja, a garantia de que se fizerem a alteração 1 seguida pela alteração 2 e o sistema travar no meio do caminho, depois de reiniciar não haverá alteração 2 sem alteração 1. (Exemplo: alteração 1 = escrever uma nova versão de um arquivo, altere 2 = excluindo a versão antiga.) Os sistemas de arquivos reordenam as gravações do sistema de arquivos para desempenho; normalmente isso é invisível para os aplicativos, pois se trata apenas do que acontece entre o cache/buffer do sistema de arquivos e o disco, e não sobre qualquer coisa que seja visível para os aplicativos. Mas no caso de uma falha do sistema, o conteúdo do disco reflete a ordem real de gravação do disco. Não há nenhuma API que diga “essa mudança deve ocorrer antes daquela mudança”, então os aplicativos são usados fdatasync​​como substitutos do pobre homem (realize a mudança 1, chame fdatasyncpara ter certeza de que foi propagada para o disco e, em seguida, execute a mudança 2). Isto pode ter um impacto negativo no desempenho, especialmente em mídias com gravações lentas, como flash.

Se um aplicativo estiver excessivamente lento em seu sistema devido ao uso excessivo de fdatasyncou de seu primo fsync, você poderá usarcomer meus dadospara anular as chamadas fsync/ fdatasync. Mas tome cuidado, pois se o seu sistema travar no meio, você poderá ficar com dados inconsistentes.

Não tenho certeza se minha resposta é relevante para lembrar ou alterar as configurações de um complemento do Firefox. Essas operações podem muito bem serleiturado disco. Lembre-se especialmente: seu trabalho é ler muitos dados!

Além disso, mesmo que as alterações não sejam sincronizadas no disco imediatamente, você pode esperar que alguns dados sejam gravados. Se os dados não forem gravados no disco, eles deverão permanecer na memória e, enquanto isso, essa memória não poderá ser usada para outras coisas mais úteis. Além disso, seria um desperdício não manter o disco ocupado: se houver dados para serem gravados, o kernel começará a gravá-los, enquanto a aplicação continua a executar e produzir mais dados.

¹ Resiliência, no contexto do design do sistema de arquivos, é a questão de saber se uma alteração no sistema de arquivos será preservada se o sistema travar.

informação relacionada