Parece que as gravações de sincronização são as culpadas aqui, e infelizmente não há muito o que fazer quando as gravações síncronas são um requisito para o sistema.
O problema se deve ao fato de que o sistema remoto que está gravando os dados deve esperar que todo o bloco do sistema de arquivos seja gravado antes de escrever o próximo. Com blocos pequenos, isso prejudicará o desempenho, como você viu.
Não há uma boa solução para esse problema, mas aqui estão algumas opções possíveis para aliviar o gargalo:
-
Aumente o tamanho do bloco para poder gravar mais dados por operação.
-
Obtenha um dispositivo SSD ou NVRAM rápido separado para gravação em cache / registro no diário. Isso melhorará significativamente sua taxa de transferência para todas as cargas de trabalho. Isso pode ser feito com o ext4 usando o comando tune2fs (8) no Ubuntu, e adicionando um dispositivo de diário externo com o parâmetro
-J
. -
Divida o compartilhamento NFS em um dedicado para gravações de sincronização e o outro com gravações assíncronas. Dessa forma, você pode colocar quaisquer dados não críticos no compartilhamento assíncrono para melhorar o rendimento dessa carga de trabalho de forma independente.
-
Tente um sistema de arquivos diferente que permita fazer o cache de gravação estável de forma nativa. Eu uso ZFS em FreeBSD em minha SAN com um log de intenção com backup de SSD (equivalente ao diário no ext4). Eu nunca tentei o ZFS no Linux , mas parece ser um projeto maduro agora. Minha taxa de transferência de leitura e gravação sobre o iSCSI melhorou significativamente após a adição de SSDs. Não tenho certeza de sua familiaridade com o ZFS, mas se você não sabe, o objetivo do ZIL (ZFS Intent Log) é fornecer um cache de gravação em um armazenamento rápido e estável, como um SSD. O registro será periodicamente confirmado no disco em grupos de transações para garantir que os dados não sejam perdidos e, no caso de uma queda de energia, as gravações podem ser reproduzidas a partir do registro para restaurar a integridade do sistema de arquivos.
Encontrei esse problema no passado e realmente não encontrei uma boa maneira de eliminar totalmente o problema. Se você descobrir outras formas de atenuar o problema, por favor me avise!