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

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

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 realmente sendo gravado no dispositivo).

É enganoso. Torna difícil avaliar a velocidade real de gravação. É irritante (não é possível interromper um programa enquanto ele está liberando buffers). Isso pode causar danos ao FS e, pelo menos, conteúdo não escrito quando o dispositivo é desconectado enquanto ainda está sendo gravado.

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

Nota: Não se trata de cache do sistema de arquivos, este efeito também aparece em dispositivos brutos

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

Obrigado!

Responder1

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 180 MB) Para alterar o tamanho do buffer sujo para, por exemplo, 200 MB, pode-se usar

echo 200000000 > /proc/sys/vm/dirty_bytes

OUpara usar uma porcentagem de RAM, por exemplo, 1%:

echo 1 > /proc/sys/vm/dirty_ratio

Mais Informações:https://lwn.net/Articles/572911/

informação relacionada