Queda na velocidade de gravação do NFS em caso de procedimento COMMIT defeituoso

Queda na velocidade de gravação do NFS em caso de procedimento COMMIT defeituoso

Em primeiro lugar, desculpe por postar uma pergunta de estudo óbvia. Eu sei que isso é um mau hábito, mas espero ainda conseguir ajuda aqui, porque fiz muitas pesquisas e não consegui encontrar nenhuma resposta para isso.

Ocenárioé assim: Um NFS-Client grava um único arquivo com 50GB no NFS-Server. Depois de gravar 4 GB com uma velocidade média de 125 MByte/s, ela cai para 12 MByte/s.

Pergunta: Como você pode explicar isso.

Odadorespondera pergunta é esta: Após 4GB de gravação o Servidor não responde ao COMMIT e o Cliente envia periodicamente COMMIT's até que o Servidor responda, pois o cliente deseja esvaziar seu cache. Nesse período, a taxa de dados cai para o nível do elemento mais lento.

Tudo o que posso encontrar sobre o processo COMMIT é uma explicação como esta:

O cliente grava os dados e quando os dados são transferidos para o Servidor, o Cliente envia o COMMIT. O servidor grava os dados no armazenamento estável e responde ao COMMIT com o verf-Cookie. Se o cookie NÃO for diferente do cookie do cliente, o cliente poderá esvaziar seu cache.

Então aqui estáminha pergunta: É verdade que se o servidor não responder ao procedimento COMMIT enviando o cookie verf, o cliente envia COMMIT periodicamente e a taxa de dados cai significativamente? Se sim, até que nível a taxa de dados cai. Não consigo concluir da resposta até que nível a taxa de dados cai.

Responder1

Acho que está acontecendo o seguinte:

Os dados enviados pelo cliente são gravados no cache FS no lado do servidor. Depois que a solicitação COMMIT é enviada, esses dados começam a ser descarregados para o armazenamento persistente (DISK). Dependendo do desempenho do disco do servidor, isso pode levar algum tempo. Digamos que o desempenho do disco seja de 300 MB/s. Para liberar 4 GB, serão necessários 13 segundos. Se esse tempo for maior que o tempo limite do NFS, o cliente poderá enviar outra solicitação COMMIT, assumindo que a primeira será perdida. O verificador COMMIT/WRITE é usado para garantir que o servidor não seja reinicializado entre essas operações.

Nesse cenário, você pode fazer:

  • aumente o tempo limite do NFS no cliente especificandotempo =opção de montagem. Embora isso só váconsertartentei novamente COMMITs.
  • diga ao servidor para iniciar a liberação dos dados com antecedência suficiente e evitar atrasos no log.

usar

sysctl -w vm.dirty_background_ratio=0
sysctl -w vm.dirty_ratio=0
sysctl -w vm.dirty_background_bytes=67108864
sysctl -w vm.dirty_bytes=536870912

Os tamanhos devem ser ajustados de acordo com o desempenho de E/S do servidor e da rede.

Para controlar quando o kernel começa a liberar dados para o disco no servidor e envia para o servidor no lado do cliente.

NOTA: estas opções são globais e afetarão todos os sistemas de arquivos.

informação relacionada