Análise de desempenho da VM no VMware vSphere. Parte 3: Armazenamento



Parte 1. Sobre a CPU
Parte 2. Sobre a memória

Hoje, analisaremos as métricas do subsistema de disco no vSphere. O problema com o armazenamento é o motivo mais comum para uma máquina virtual lenta. Se, nos casos com CPU e RAM, a solução de problemas terminar no nível do hipervisor, com problemas no disco, talvez seja necessário lidar com a rede de dados e os sistemas de armazenamento.

Analisarei o tópico usando o exemplo de acesso de bloco ao armazenamento, embora com acesso a arquivos os contadores sejam praticamente os mesmos.

Pouco de teoria


Ao falar sobre o desempenho do subsistema de disco de máquinas virtuais, geralmente preste atenção a três parâmetros relacionados:

  • número de operações de entrada / saída (operações de entrada / saída por segundo, IOPS);
  • largura de banda (taxa de transferência);
  • latência das operações de entrada / saída (latência).

O número de IOPS geralmente é importante para cargas de trabalho aleatórias: acesso a blocos no disco localizados em locais diferentes. Bancos de dados, aplicativos de negócios (ERP, CRM) etc. podem servir como um exemplo dessa carga.

A taxa de transferência é importante para cargas seqüenciais: acesso a blocos localizados um após o outro. Por exemplo, servidores de arquivos (mas nem sempre) e sistemas de vigilância por vídeo podem gerar essa carga.

A taxa de transferência está relacionada ao número de operações de E / S, da seguinte maneira:

Rendimento = IOPS * Tamanho do bloco , em que tamanho do bloco é o tamanho do bloco.

O tamanho do bloco é um recurso muito importante. As versões modernas do ESXi permitem blocos de até 32.767 KB de tamanho. Se o bloco for ainda maior, ele será dividido em vários. Nem todos os sistemas de armazenamento podem funcionar efetivamente com blocos grandes, portanto, Configurações avançadas O ESXi possui o parâmetro DiskMaxIOSize. Utilizando-o, você pode reduzir o tamanho máximo de um bloco ignorado pelo hypervisor (mais detalhes aqui ). Eu recomendo que você consulte o fabricante dos sistemas de armazenamento antes de alterar esse parâmetro ou, pelo menos, teste as alterações na bancada do laboratório.

Tamanhos grandes de blocos podem afetar adversamente o desempenho do armazenamento. Mesmo que o número de IOPS e a taxa de transferência sejam relativamente pequenos, latências altas podem ocorrer com um tamanho de bloco grande. Portanto, preste atenção neste parâmetro.

Latência é o parâmetro de desempenho mais interessante. A latência das operações de E / S para uma máquina virtual é a soma de:

  • atrasos no hypervisor (KAVG, Average Kernel MilliSec / Read);
  • latência fornecida pela rede e armazenamento de dados (DAVG, Average Driver MilliSec / Command).

O atraso total visível no sistema operacional convidado (GAVG, MilliSec médio de hóspedes / comando) é a soma do KAVG e DAVG.

GAVG e DAVG são medidos, e KAVG é calculado: GAVG - DAVG.


Fonte

Vamos nos debruçar sobre KAVG . Em operação normal, o KAVG deve tender a zero, ou pelo menos ser muito menor que o DAVG. O único caso que conheço quando o KAVG deve estar alto é o limite de IOPS no disco da VM. Nesse caso, ao tentar exceder o limite, o KAVG aumentará.

O componente mais significativo do KAVG é o QAVG - o tempo na fila para processamento dentro do hypervisor. Os demais componentes do KAVG são desprezíveis.

A fila no driver do adaptador de disco e a fila da lua têm um tamanho fixo. Para ambientes muito carregados, esse tamanho pode ser útil para aumentar. Ele descreve como aumentar a fila no driver do adaptador (ao mesmo tempo, a fila para as luas aumentará). Essa configuração funciona quando apenas uma VM trabalha com a lua, o que é raro. Se houver várias VMs na lua, você também deverá aumentar o parâmetro Disk.SchedNumReqOutstanding (instruções aqui ). Ao aumentar a fila, você diminui o QAVG e o KAVG, respectivamente.

Mas, novamente, primeiro leia a documentação do fornecedor do HBA e teste as alterações na bancada do laboratório.

O tamanho da fila para a lua pode ser afetado pela inclusão do mecanismo SIOC (Storage I / O Control). Ele fornece acesso uniforme à lua de todos os servidores no cluster, alterando dinamicamente a fila para a lua nos servidores. Ou seja, se uma VM é executada em um host que requer uma quantidade desproporcional de desempenho (VM vizinha barulhenta), o SIOC reduz o comprimento da fila para a lua nesse host (DQLEN). Mais detalhes aqui .

KAVG resolvido, agora um pouco sobre DAVG . Tudo é simples aqui: o DAVG é o atraso introduzido pelo ambiente externo (rede e armazenamento de dados). Qualquer sistema de armazenamento moderno e nem tanto possui seus próprios contadores de desempenho. Para analisar problemas com o DAVG, faz sentido analisá-los. Se tudo estiver bem no ESXi e no lado do armazenamento, verifique a rede de dados.

Para evitar problemas de desempenho, escolha a PSP (política de seleção de caminho) correta para o seu armazenamento. Quase todos os sistemas de armazenamento modernos oferecem suporte ao PSP Round-Robin (com ou sem ALUA, acesso à unidade lógica assimétrica). Esta política permite que você use todos os caminhos disponíveis para armazenamento. No caso do ALUA, apenas os caminhos para o controlador que possui a lua são usados. Nem todos os sistemas de armazenamento no ESXi possuem regras padrão que estabelecem a política Round-Robin. Se não houver regra para o seu sistema de armazenamento, use o plug-in do fabricante do armazenamento que criará a regra correspondente em todos os hosts no cluster ou crie você mesmo a regra. Detalhes aqui .

Além disso, alguns fornecedores de armazenamento recomendam alterar o número de IOPS por caminho do valor padrão de 1000 para 1. Em nossa prática, isso nos permitiu "extrair" mais desempenho do armazenamento e reduzir significativamente o tempo necessário para failover no caso de uma falha ou atualização do controlador. Verifique as recomendações do fornecedor e, se não houver contra-indicações, tente alterar este parâmetro. Detalhes aqui .

Contadores de desempenho básico do subsistema de disco de uma máquina virtual


Os contadores de desempenho do subsistema de disco no vCenter são coletados nas seções Armazenamento de dados, disco e disco virtual:



A seção Datastore contém métricas para armazenamentos de disco do vSphere (datastores) nos quais os discos da VM estão localizados. Aqui você encontrará contadores padrão para:

  • IOPS (pedidos médios de leitura / gravação por segundo),
  • largura de banda (taxa de leitura / gravação),
  • atrasos (leitura / gravação / maior latência).

Dos nomes dos contadores, em princípio, tudo está claro. Mais uma vez, chamarei a atenção para o fato de que aqui as estatísticas não são para uma VM específica (ou disco da VM), mas gerais para todo o armazenamento de dados. Na minha opinião, é mais conveniente examinar essas estatísticas no ESXTOP, pelo menos com base no fato de que o período mínimo de medição é de 2 segundos.

A seção Disco contém métricas para os dispositivos de bloco usados ​​pela VM. Existem contadores IOPS do tipo de soma (o número de operações de E / S por período de medição) e vários contadores relacionados ao acesso ao bloco (comandos abortados, redefinições de barramento). Na minha opinião, essa informação também é mais conveniente para assistir no ESXTOP.

A seção Disco virtual é a mais útil em termos de solução de problemas de desempenho do subsistema de disco da VM. Aqui você pode ver o desempenho de cada disco virtual. Essas informações são necessárias para entender se uma determinada máquina virtual tem um problema. Além dos contadores padrão para o número de operações de entrada / saída, volume de leitura / gravação e atrasos, esta seção contém contadores úteis que mostram o tamanho do bloco: Tamanho da solicitação de leitura / gravação.

Na figura abaixo, um gráfico do desempenho do disco da VM, onde você pode ver o número de IOPS, latência e tamanho do bloco.



As métricas de desempenho também podem ser exibidas em todo o armazenamento de dados se o SIOC estiver ativado. Aqui estão algumas informações básicas sobre latência média e IOPS. Por padrão, essas informações podem ser visualizadas apenas em tempo real.



ESXTOP


O ESXTOP possui várias telas que exibem informações sobre o subsistema de disco host como um todo, máquinas virtuais individuais e seus discos.

Vamos começar com informações sobre máquinas virtuais. A tela "Disk VM" é acessada pela tecla "v":



NVDISK é o número de discos da VM. Para visualizar informações em cada disco, pressione “e” e digite o GID da VM em que você está interessado.

O significado dos parâmetros restantes nesta tela é claro em seus nomes.

Outra tela útil para solução de problemas é o adaptador de disco. É chamado pela tecla “d” (na figura abaixo, os campos A, B, C, D, E, G são selecionados):



NPTH é o número de caminhos da lua que são visíveis neste adaptador. Para obter informações sobre cada caminho no adaptador, pressione “e” e digite o nome do adaptador:



AQLEN - tamanho máximo da fila no adaptador.

Também nesta tela estão os contadores de atraso, sobre os quais falei acima: KAVG / cmd, GAVG / cmd, DAVG / cmd, QAVG / cmd .

A tela do dispositivo de disco, chamada pela tecla “u”, exibe informações sobre dispositivos de bloco individuais - luas (na figura abaixo, os campos A, B, F, G, I são selecionados). Aqui você pode ver o status da fila para as luas.



DQLEN - tamanho da fila para um dispositivo de bloco.
ACTV é o número de comandos de E / S no núcleo do ESXi.
QUED - o número de comandos de E / S na fila.
% USD - ACTV / DQLEN × 100%.
CARGA - (ACTV + QUED) / DQLEN.

Se% USD for alto, considere expandir a programação. Quanto mais equipes na fila, maior o QAVG e, consequentemente, o KAVG.

Você também pode ver na tela do dispositivo de disco se o VAAI (vStorage API for Array Integration) está sendo executado no armazenamento. Para fazer isso, selecione os campos A e O.

O mecanismo VAAI permite transferir parte do trabalho do hypervisor diretamente para o sistema de armazenamento, por exemplo, zerar, copiar blocos ou bloquear.



Como você pode ver na figura acima, o VAAI funciona neste sistema de armazenamento: Primitivas zero e ATS são ativamente usadas.

Dicas de otimização de disco do ESXi


  • Preste atenção ao tamanho do bloco.
  • Defina o tamanho ideal da fila no HBA.
  • Lembre-se de ativar o SIOC nos datastores.
  • Escolha seu PSP de acordo com as recomendações do fabricante.
  • Verifique se o VAAI está funcionando.

Source: https://habr.com/ru/post/pt461127/


All Articles