Como reduzir o buffer de gravação do Linux para dispositivos removíveis?

5

Ao gravar conteúdo em dispositivos removíveis no Linux (pen drives / HDDs, cartões SD, etc), muitas vezes vejo velocidades de gravação incríveis nos primeiros segundos, às vezes na ordem de GB / s (preenchimento do buffer de gravação) seguido por vários minutos de silêncio (buffer sendo realmente gravado no dispositivo).

É enganoso. Isso torna difícil julgar a velocidade real de gravação. É irritante (não pode interromper um programa enquanto está liberando buffers). Isso pode causar danos ao FS e, no mínimo, conteúdo não escrito quando o dispositivo é desconectado enquanto ainda está sendo gravado.

O buffer de gravação parece estar acima de GB no meu caso. Existe uma maneira de controlá-lo? Eu gostaria de reduzi-lo a um valor mais sensato.

Nota: Isso não é sobre o cache do sistema de arquivos, esse efeito também aparece em dispositivos brutos

Nota: não desejo desabilitar totalmente os buffers de gravação

Obrigado!

    
por 1N4001 25.06.2016 / 09:31

1 resposta

2

Eu encontrei a resposta. O Linux de 64 bits mantém um grande buffer de gravação (20% da memória disponível!) Por padrão. (Curiosamente, o Linux de 32 bits limita-se a no máximo 180MB) Para alterar o tamanho do buffer sujo para, por ex. 200MB, pode-se usar

echo 200000000 > /proc/sys/vm/dirty_bytes

OU para usar uma porcentagem de RAM, por exemplo 1%:

echo 1 > /proc/sys/vm/dirty_ratio

Mais informações: link

    
por 02.07.2016 / 21:38