- Os parâmetros padrão do ZFS são definidos como um meio-termo entre acesso sequencial e acesso aleatório
- Se você conhece claramente as características da carga de trabalho, é possível fazer um ajuste mais agressivo
- Explicação da diferença entre acesso sequencial vs acesso aleatório
- Em HDDs, por causa do movimento da cabeça, o desempenho de acesso aleatório pode ser de dezenas a centenas de vezes mais lento que o acesso sequencial
- Mesmo em SSDs, o acesso aleatório ficou muito mais rápido, mas o acesso sequencial ainda é mais eficiente
- Cargas de trabalho que leem arquivos grandes em ordem têm forte tendência a acesso sequencial
- Cargas de trabalho que leem com frequência vários arquivos pequenos tendem fortemente ao acesso aleatório
- Introdução a métodos de análise da carga de trabalho
- Inferência lógica com base no código/na estrutura
- Cálculo do tamanho médio de IO com base em throughput (bps) + número de IOs por segundo (iops)
- Análise da distribuição de tamanho de IO com base em
zpool iostat -r
- Interpretação de
zpool iostat -r
ind: tamanho de cada requisição lógica individual
agg: tamanho do IO real executado após a fusão
- Se
agg for maior que ind, isso significa que a fusão de IOs adjacentes está funcionando bem
- Resultado da análise da carga de trabalho de exemplo
- Cerca de 76% de participação de leituras síncronas
- Mais de 99% das leituras têm 32KiB ou menos
- Nas escritas assíncronas também há alta proporção de IOs pequenos
- No geral, é uma carga de trabalho com tendência muito forte a acesso aleatório
zfs_prefetch_disable
- O ZFS carrega previamente blocos adjacentes no ARC ao detectar um padrão de acesso sequencial
- Em cargas de trabalho de acesso aleatório, a taxa de acerto da pré-leitura pode ser baixa e acabar apenas aumentando IOs desnecessários
- É possível medir a eficiência da pré-leitura com base em
arc_summary
- Se a taxa de acerto for baixa, vale considerar
zfs_prefetch_disable
recordsize
- O valor padrão é 128K
- Como na carga de trabalho de exemplo a maioria dos IOs é de 32KiB ou menos, pode valer considerar um
recordsize menor
- Escolha do valor ideal
- É importante decidir com base em benchmarks
- Bancos de dados como MySQL/Postgres já têm muitos casos de ajuste validados
- Em geral, costuma-se usar um
recordsize semelhante ao tamanho de página do banco de dados
Ainda não há comentários.