Opções de cache Ext4 em uma máquina virtual

5

Estou tentando acelerar um aumento de máquinas virtuais usadas para ambientes de teste / desenvolvimento automatizado e queria verificar algumas suposições sobre o cache de gravações de disco.

Estou usando ext4 para o sistema de arquivos raiz na VM e realmente não me importo com os cenários de perda de energia. Se houver perda de energia e o disco for corrompido, a máquina inteira poderá ser reconstruída em alguns minutos. Para mim, isso significa que as opções a seguir podem ser aplicadas com segurança e não devem fazer diferença para os aplicativos - elas afetarão apenas como os dados armazenados no buffer são gravados no disco em si, mas a representação na memória em cache sempre será precisa:

  • nobarrier
  • data = writeback
  • nobh
  • commit = 3600

Isso está correto? E existem outros parâmetros do ext4 que eu deveria analisar para melhorar o desempenho?

    
por viraptor 19.06.2013 / 16:53

1 resposta

0

journal_async_commit, noauto_da_alloc, dioread_nolock. Veja documentação do ext4 para descrições.

Além disso, nouser_xattr, noacl, se você não usá-los, pode dar pequenas melhorias de desempenho nas primeiras pesquisas (mas não é relevante, a menos que você esteja usando a ordem de milhões de arquivos).

Observe que o uso de commit = 3600 (melhorando o tempo total de algumas operações devido a lotes) pode não estar fazendo o que você deseja. Quando é acionado (provavelmente muito antes de 3600, devido às condições completas do diário), você terá uma grande quantidade de E / S que interromperia praticamente qualquer coisa que esteja sendo executada na máquina até que seja concluída (o que pode demorar alguns minutos, dependendo do tamanho do diário e Velocidades de E / S). Um valor menor lhe dará mais, mas pequenas explosões de metadados, para que não pareça uma máquina "enforcada". Pode ou não ser problema para você.

Se você não quiser que o jounrnal, você pode querer desativá-lo completamente - note que ele pode melhorar o desempenho um pouco, mas também pode piorar:

tune2fs -O ^has_journal /dev/sdXX

Além disso, algumas cargas específicas (como criar e remover muitos arquivos pequenos em pequenos intervalos de tempo, como a fila de mensagens SMTP do servidor de email ocupado, por exemplo) podem paradoxalmente preferir dados = diário a dados = writeback (ou mesmo nenhum diário) - como ele estará usando apenas journal (que é linear escreve em vez de gravações aleatórias, portanto, MUITO mais rápido em armazenamento não-SSD).

Mas o mais importante é que você terá de comparativo para descobrir qual deles combina com você da melhor forma possível - não há uma bala de prata.

    
por 06.08.2013 / 16:41