Seu armazenamento em cache de arquivos provavelmente está ajustado incorretamente para sua carga de trabalho. Infelizmente, o kernel do Linux é estúpido o suficiente para não lidar com isso automaticamente e os padrões são muito ruins se você tiver muita memória RAM e dispositivos de bloqueio suficientemente lentos. Consulte o link para obter detalhes.
Sugiro tentar modificar /etc/sysctl.conf
vm.dirty_background_ratio = 3
vm.dirty_ratio = 6
para reduzir drasticamente a pressão da RAM causada pelo cache de gravação para permitir que o kernel manipule melhor outras tarefas. Isso trará melhor latência para menor taxa de transferência.
Outra possibilidade é aumentar o cache, mas se o seu processo constantemente escrever novos dados o tempo todo, você atingirá uma latência muito ruim se o cache ficar cheio. Se você quiser experimentar, você pode fazer algo como
vm.dirty_background_ratio = 5
vm.dirty_ratio = 80
Observe que *_ratio
configurações se referem à porcentagem de RAM disponível. Se você quiser um melhor controle, use as configurações de *_bytes
. Eu pessoalmente uso a seguinte configuração para minha estação de trabalho:
vm.dirty_background_bytes = 50000000
vm.dirty_bytes = 200000000
Isso limita o cache de gravação em segundo plano a 50 MB e força a gravação em sincronia se 200 MB estiverem no cache.