Tuning de desempenho de sincronização de arquivos

Há várias maneiras de aprimar a sincronização de arquivos.

O arquivo JFS I/Os que não são sequenciais se acumula na memória até que determinadas condições sejam atendidas:

  • Os santinhos de lista livre para minfree, e substituição de página devem ocorrer.
  • O syncd daemon flushes páginas em intervalos regulares.
  • O comando sync é emitido.
  • Aleatório-escrever atrás de flushes as páginas sujas após o aleatório-escrever atrás do limite é alcançado.

Se muitas páginas se acumulam antes de uma dessas condições ocorrer, então, quando as páginas fazem o flushed pelo daemon syncd , o bloqueio i-node é obtido e mantido até que todas as páginas sujas tenham sido gravadas em disco. Durante este tempo, threads tentando acessar esse arquivo fica bloqueado porque o bloqueio i-node está indisponível. O comando fuser também está bloqueado para o arquivo, pois o comandofuser precisa do bloqueio de inode para fornecer as informações necessárias. Lembre-se de que o daemon syncd atualmente ossa todas as páginas sujas de um arquivo, mas um arquivo de cada vez. Em sistemas com grande quantidade de memória e grande número de páginas ficando modificadas, picos altos de I/Os podem ocorrer quando o daemon syncd falha nas páginas.

AIX tem uma opção ajustável chamada sync_release_ilock. O comando ioo com a opção -o sync_release_ilock=1 permite que o bloqueio i-node seja liberado enquanto páginas sujas desse arquivo estão sendo fluscadas. Isso pode resultar em melhor tempo de resposta ao acessar este arquivo durante uma chamada sync () .

Este efeito de bloqueio também pode ser minimizado através do aumento da frequência de syncs no daemon syncd . Altere /sbin/rc.boot onde ele inicia o daemon syncd . Em seguida, reinicialize o sistema para que ele faça efeito. Para o sistema atual, mate o daemon syncd e reinicie-o com o valor de segundos novos.

Uma terceira maneira de sintonizar esse comportamento é virando gravação aleatória por trás usando o comando ioo (veja Gravação sequencial e aleatória por trás do ajuste de desempenho).

JFS2 Ajustes de Sincronização

A operação de sincronização do sistema de arquivos pode não ser efetiva em situações quando há atividade de E/S aleatória em um arquivo grande. Quando ocorre uma sincronia, todas as leituras e gravações de programas do usuário para o arquivo estão bloqueadas. Com muitas páginas sujas no arquivo, é necessário um tempo considerável para finalizar a escrita no disco. Os seguintes parâmetros ajustáveis do JFS2 podem ser usados em tais cenários:
  • j2_syncPageCount: Limita o número de páginas modificadas que estão programadas para serem escritas por sincronia em uma passagem para um arquivo. Quando este ajustável é configurado, o sistema de arquivos grava o número especificado de páginas sem bloquear E/S para o resto do arquivo. A chamada sync itera na operação de gravação até que todas as páginas modificadas sejam escritas.
  • j2_syncPageLimit: substitui o parâmetro j2_syncPageCount quando um limite é atingido. Use este parâmetro para garantir que a operação de sincronização esteja completa para um arquivo. Os ajustáveis são mantidos da forma padrão.

Os ajustáveis são manipulados usando o comando ioo .

Os ajustáveis j2_syncPageCount e j2_syncPageLimit são adicionados à lista de valores que são controlados pelo comando ioo .

Use a sinalização –o para exibir ou alterar o valor, e para visualizar a opção de ajuda use a sinalização –h .
# ioo –h j2_syncPageCount
Configura o número máximo de páginas modificadas de um arquivo que é gravado em disco pela chamada de sistema de sincronização em uma única operação.

Valores: Padrão: 0 Alcance: 0-65536

Tipo: Dinâmica

Unidade: 4 KB páginas

Ajuste: ao executar um aplicativo que usa o armazenamento em cache do sistema de arquivos e faz grandes números de gravações aleatórias, é necessário ajustar essa configuração para evitar demoras demoradas de aplicação durante as operações de sincronização. Os valores devem estar na faixa de 256 a 1024. O valor padrão é zero que resulta no comportamento de sincronia normal de escrever todas as páginas sujas em uma única chamada. Se os pequenos valores para os ajustáveis forem configurados, ele resulta em tempos de sincronização mais longos e atrasos mais curtos no tempo de resposta do aplicativo. Se valores maiores forem configurados, então os atrasos de tempo de resposta são mais longos e os horários de sincronização são mais curtos.

# ioo –h j2_syncPageLimit
Configura o número máximo de vezes que a chamada do sistema de sincronização usa o j2_syncPageCount, para limitar as páginas que são escritas para melhorar o desempenho da operação de sincronização.

Valores: Padrão: 256 Alcance: 16-65536

Tipo: Dinâmica

Unidade: Numérico

Ajuste: É configurado quando j2_syncPageCount é configurado e deve ser aumentado, se o efeito da alteração j2_syncPageCount for insuficiente. Os valores aceitáveis estão na faixa de 250 a 8000. j2_syncPageLimit não tem efeito se j2_syncPageCount for 0.

Este ajustável deve ser configurado quando j2_syncPageCount é configurado e deve ser aumentado, de modo que o efeito da alteraçãoj2_syncPageCount não reduz o tempo de resposta do aplicativo.

Os valores devem estar na faixa de 1 a 8000. O valor ideal para esses ajustáveis é dependente do tamanho da memória e da largura de banda de I/O. Um ponto de partida neutro é configurar ambos esses ajustes para 256.

JFS2 Período de sincronização e simultaneidade

A sincronização do sistema de arquivos é gerenciada pelo daemon de sincronização (syncd). Use os parâmetros ajustáveis do JFS2 para permitir que o sistema de arquivos manipule a sincronização sem usar o syncd.

JFS2 O manipulador de sincronização espalha o processo de sincronização de tal forma que todos os dados em cache não são gravados em disco ao mesmo tempo. A sincronização é realizada em um único sistema de arquivos de cada vez. Cada sistema de arquivos está programado para iniciar a próxima operação de sincronização após o térreo da operação anterior. Você também pode aumentar o número de threads que estão manipulando a operação de sincronização quando vários sistemas de arquivos devem ser processados.

Use os seguintes parâmetros ajustáveis para a sincronização do sistema de arquivos JFS2 :

j2_syncByVFS:
Especifica o uso do manipulador de sincronização JFS2 e configura o intervalo entre operação de sincronização para cada sistema de arquivos.
j2_syncConcurrency:
Configura o número de threads que estão manipulando a sincronização do sistema de arquivos. Este valor indica o número de sistemas de arquivos em que a operação de sincronização deve ser realizada simultaneamente. Apenas um encadeamento de sincronização executa operação de sincronização em um sistema de arquivos individual.

ioo O comando gerencia parâmetros de sintonia de E/S. Consulte a documentação do comando ioo para obter mais informações.

# ioo –h j2_syncByVFS

Propósito: Especifica o número de segundos a esperar entre chamadas de sistema para sincronizar um sistema de arquivos JFS2 . Este valor suplanta o valor especificado pelo comando syncd .

Valores: Padrão: 0, Intervalo: 0-86400.

Tipo: Dinâmico.

Unidades: Segundos.

Ajuste: Este valor indica o número de segundos entre iterações do processo de sincronização. O manipulador de sincronia JFS2 até o tempo especificado pelo parâmetro ajustável j2_syncByVFS antes de iniciar chamadas para os sistemas de arquivos syncvfs subroutine para JFS2 . Um valor de 0 indica que o processamento sincd normal deve ser utilizado. Um valor diferente de zero substitui o tempo que é especificado no comando syncd e faz com que o manipulador de sincronização de arquivos JFS2-specific seja usado.

# ioo –h j2_syncConcurrency

Propósito: Configura o número de threads a serem usadas para operações de sincronização JFS2 .

Valores: Padrão: 1, Intervalo: 1-128.

Tipo: Dinâmico.

Unidade: Numérico.

Ajuste: O daemon de sincronização inicia operações de sincronização conatualmente para o número de sistemas de arquivos configurados pelo parâmetro ajustável j2_syncConcurrency . Este vale é eficaz apenas quando o parâmetro ajustável j2_syncByVFS é nonzero.