Sincronizar o sistema de arquivos em segundo plano

2

Enquanto codifico Python, costumo salvar arquivos com muita freqüência (eu tenho uma alta code->test->code->test->... de frequência). Eu odeio quando o Linux sincroniza minhas alterações no disco toda vez que escrevo.

Como configuro o Linux para que ele mantenha as gravações de arquivos na memória por um determinado período de tempo / número de gravações?

Para tornar isso útil, é claro que as leituras para arquivos ainda não fsynced devem ser da memória (para que o interpretador Python sempre veja o conteúdo mais recente). Créditos extras para execução de plano de fundo que não bloqueiam outras gravações / leituras acontecendo ao mesmo tempo: -)

    
por Jonas 25.08.2011 / 11:54

1 resposta

4

Normalmente o Linux sempre armazena em cache gravações de disco por algum tempo, mas isso depende das opções de montagem do sistema de arquivos. Certifique-se de que o sistema de arquivos esteja montado no modo async , verificando findmnt ou /proc/mounts .

  • Bom: /dev/sda4 /home btrfs rw,relatime 0 0
  • Ruim: /dev/sda4 /home btrfs rw,sync,relatime 0 0

Se o seu disco tiver sido montado no modo sync por algum motivo, use este comando para uma correção temporária e ajuste sua configuração em /etc/fstab para torná-lo permanente:

mount -o remount,async /home

(Substitua /home pela raiz real do sistema de arquivos - possivelmente apenas / em uma configuração de partição única.)

Na maioria das vezes, porém, o processamento extra é feito pelo seu editor de texto - o Vim, em particular, faz isso tanto para o arquivo real quanto para o swapfile. Use o fsync e o swapsync opções em vimrc para controlá-lo:

set nofsync swapsync=

Para o Emacs, você pode definir write-region-inhibit-fsync .

Este artigo descreve o comportamento do Linux fsync() no Firefox, e também menciona que ext3 (não ext4) pode causar atrasos muito longos quando o sistema de arquivos é montado no modo data=ordered :

On some rather common Linux configurations, especially using the ext3 filesystem in the “data=ordered” mode, calling fsync doesn’t just flush out the data for the file it’s called on, but rather on all the buffered data for that filesystem.

Se você estiver usando o ext3 neste modo, considere desativá-lo.

    
por 25.08.2011 / 12:04