Resolução de problemas de desempenho de instâncias de computação


Este documento mostra como diagnosticar e mitigar problemas de desempenho da CPU, da memória e do armazenamento na máquina virtual (VM) do Compute Engine e nas instâncias bare metal.

Antes de começar

Veja as métricas de desempenho

Para ver as métricas de desempenho das suas instâncias de computação, use as métricas de observabilidade do Cloud Monitoring disponíveis na Google Cloud consola.

  1. Na Google Cloud consola, aceda à página Instâncias de VM.

    Aceder a Instâncias de VM

  2. Pode ver métricas para instâncias individuais ou para as cinco instâncias que estão a consumir a maior quantidade de um recurso.

    Para ver métricas de instâncias individuais, faça o seguinte:

    1. Clique no nome da instância para a qual quer ver as métricas de desempenho. É apresentada a página Detalhes da instância.

    2. Clique no separador Observabilidade para abrir a página Vista geral da observabilidade.

    Para ver as métricas das cinco instâncias que consomem a maior quantidade de um recurso, clique no separador Observabilidade na página Instâncias de VM.

  3. Explore as métricas de desempenho da instância. Veja as secções Vista geral, CPU, Memória, Rede e Disco para ver métricas detalhadas sobre cada tópico. Seguem-se as principais métricas que indicam o desempenho da instância:

    • Na página Vista geral:

      • Utilização da CPU. A percentagem de CPU usada pela instância.

      • Utilização da memória. A percentagem de memória usada pela instância, excluindo as caches de disco. Para instâncias que usam um SO Linux, isto também exclui a memória do kernel.

      • Tráfego de rede. A taxa média de bytes enviados e recebidos em intervalos de um minuto.

      • Novas ligações com VMs/externas/Google. O número estimado de fluxos TCP/UDP distintos num minuto, agrupados por tipo de par.

      • Débito do disco. A taxa média de bytes escritos e lidos nos discos.

      • IOPS de disco. A taxa média de operações de leitura e escrita de E/S para discos.

    • Na página Resumo da rede:

      • Enviado para VMs/externo/Google. A taxa de tráfego de rede enviada para os serviços, as instâncias e os destinos externos da Google, com base numa amostra de pacotes. A métrica é dimensionada para que a soma corresponda ao tráfego de rede total enviado.

      • Recebido de VMs/External/Google. A taxa de tráfego de rede recebido dos serviços, das instâncias e das origens externas da Google, com base numa amostra de pacotes. A métrica é dimensionada para que a soma corresponda ao tráfego de rede total recebido.

      • Totais de pacotes de rede. A taxa total de pacotes enviados e recebidos em intervalos de um minuto.

      • Tamanho médio dos pacotes. O tamanho médio dos pacotes, em bytes, enviados e recebidos em intervalos de um minuto.

      • Pacotes recebidos da firewall recusados. A taxa de pacotes de rede recebidos enviados para a instância, mas não recebidos pela instância, porque foram recusados pelas regras de firewall.

    • Na página Desempenho dos discos:

      • Tamanho médio de E/S: o tamanho médio das operações de leitura e escrita de E/S em discos. Normalmente, as E/S aleatórias pequenas (4 a 16 KiB) são limitadas por IOPS e as E/S sequenciais ou grandes (256 KiB a 1 MiB) são limitadas pela taxa de transferência.

      • Média do comprimento da fila: o número de operações de E/S de disco em fila e em execução, também denominado profundidade da fila, para os 5 principais dispositivos. Para atingir os limites de desempenho dos seus discos, use uma profundidade da fila de E/S elevada. O disco persistente e o Google Cloud Hyperdisk são armazenamento em rede e, geralmente, têm uma latência superior em comparação com os discos físicos ou os discos SSD locais.

      • Latência de E/S média: a latência média das operações de leitura e escrita de E/S agregada nas operações de todos os discos associados à instância, medida pelo agente de operações. Este valor inclui a latência de processamento do sistema operativo e do sistema de ficheiros, e depende do comprimento da fila e do tamanho de E/S.

Compreenda as métricas de desempenho

O desempenho da instância é afetado pelo hardware em que a instância é executada, pela carga de trabalho em execução na instância e pelo tipo de máquina da instância. Se o hardware não suportar a carga de trabalho ou o tráfego de rede da sua instância, o desempenho da instância pode ser afetado.

Desempenho da CPU e da memória

Detalhes do hardware

O desempenho da CPU e da memória é afetado pelas seguintes restrições de hardware:

  • Cada CPU virtual (vCPU) é implementada como um único hardware multi thread num processador da CPU.
  • Os processadores de CPU Intel Xeon suportam vários threads de apps num único núcleo do processador.
  • As VMs que usam tipos de máquinas C2 têm um mapeamento de núcleos virtuais para físicos fixo e expõem a arquitetura de células NUMA ao SO convidado.
  • A maioria das VMs recebe a frequência turbo de todos os núcleos indicada nas plataformas de CPU, mesmo que apenas a frequência base seja anunciada ao ambiente convidado
  • Os tipos de máquinas com núcleo partilhado usam a comutação de contexto para partilhar um núcleo físico entre vCPUs para realizar várias tarefas em simultâneo. Também oferecem capacidades de picos de atividade durante os quais a utilização da CPU de uma VM pode ultrapassar os 100%. Para mais informações, consulte Tipos de máquinas com núcleo partilhado.

Para compreender o desempenho da CPU e da memória de uma instância, veja as métricas de desempenho para a utilização da CPU e a utilização da memória. Além disso, pode usar métricas de processo para ver processos em execução, atribuir anomalias no consumo de recursos a um processo específico ou identificar os consumidores de recursos mais caros da sua instância.

Uma utilização da CPU ou da memória consistentemente elevada indica a necessidade de aumentar a dimensão de uma VM. Se a VM usar consistentemente mais de 90% da respetiva CPU ou memória, altere o tipo de máquina da VM para um tipo de máquina com mais vCPUs ou memória.

Uma utilização da CPU invulgarmente elevada ou invulgarmente baixa pode indicar que a sua VM está a ter um bloqueio suave da CPU. Para mais informações, consulte o artigo Resolução de problemas de bloqueios de software de vCPU.

Desempenho da rede

Detalhes do hardware

O desempenho da rede é afetado pelas seguintes restrições de hardware:

Para compreender o desempenho da rede de uma instância, veja as métricas de desempenho para Totais de pacotes de rede, Tamanho médio dos pacotes, Novas ligações com VMs/externas/Google, Enviado para VMs/externas/Google, Recebido de VMs/externas/Google e Pacotes recebidos da firewall recusados.

Reveja se os Totais de pacotes de rede, o Tamanho médio dos pacotes e as Novas ligações com VMs/externas/Google são típicos da sua carga de trabalho. Por exemplo, um servidor Web pode ter muitas ligações e pacotes pequenos, enquanto uma base de dados pode ter poucas ligações e pacotes grandes.

Um tráfego de rede de saída consistentemente elevado pode indicar a necessidade de alterar o tipo de máquina da VM para um tipo de máquina com um limite de largura de banda de saída mais elevado.

Se notar um número elevado de pacotes recebidos recusados por firewalls, visite a página Estatísticas da firewall de inteligência de rede na Google Cloud consola para saber mais acerca das origens dos pacotes recusados.

Aceda à página Firewall Insights

Se considerar que o seu próprio tráfego está a ser recusado incorretamente por firewalls, pode criar e executar testes de conetividade.

Se a sua instância enviar e receber um grande volume de tráfego de instâncias em zonas ou regiões diferentes, pondere modificar a sua carga de trabalho para manter mais dados numa zona ou região, de modo a aumentar a latência e diminuir os custos. Para mais informações, consulte os preços de transferência de dados de VM para VM no Google Cloud. Se a sua instância enviar uma grande quantidade de tráfego para outras instâncias na mesma zona, considere usar uma política de posicionamento compacta para alcançar uma baixa latência da rede.

Instâncias bare metal

Ao contrário das instâncias de VM, numa instância bare metal, os estados de suspensão C6 e C1E não estão desativados. Isto pode fazer com que os núcleos inativos entrem num estado de suspensão e pode resultar numa redução do desempenho da rede das instâncias bare metal. Estes estados de suspensão podem ser desativados no sistema operativo se precisar do desempenho total da largura de banda da rede.

  • Para desativar os estados de suspensão numa instância bare metal sem ter de reiniciar a instância, use o seguinte script:

    for cpu in {0..191}; do
    echo "1" | sudo tee /sys/devices/system/cpu/cpu$cpu/cpuidle/state3/disable
    echo "1" | sudo tee /sys/devices/system/cpu/cpu$cpu/cpuidle/state2/disable
    done
    
  • Em alternativa, pode atualizar o ficheiro de configuração do GRUB para manter as alterações nos reinícios da instância.

    # add intel_idle.max_cstate=1 processor.max_cstate=1 to GRUB_CMDLINE_LINUX
    sudo vim /etc/default/grub
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    sudo reboot
  • Após o reinício, verifique se os estados de suspensão C6 e C1E estão desativados:

    ls /sys/devices/system/cpu/cpu0/cpuidle/
    state0  state1
    
    cat /sys/devices/system/cpu/cpu0/cpuidle/state*/name
    POLL
    C1

A unidade de gestão de memória de entrada/saída (IOMMU) é uma funcionalidade da CPU que fornece virtualização de endereços para dispositivos PCI. A IOMMU pode afetar negativamente o desempenho da rede se houver muitas falhas de I/O translation lookaside buffer (IOTLB).

  • É mais provável ter falhas quando são usadas páginas pequenas.
  • Para um melhor desempenho, recomendamos que use páginas grandes (2 MB a 1 GB).

Desempenho do armazenamento

Detalhes do hardware

O armazenamento é afetado pelas seguintes restrições de hardware:

  • O tamanho total de todos os discos persistentes combinado com o número de vCPUs determina o desempenho total do armazenamento. Se existirem diferentes tipos de discos persistentes anexados a uma VM, o limite de desempenho do disco persistente SSD é partilhado por todos os discos na VM. Para mais informações,consulte Desempenho do armazenamento em blocos.
  • Quando o disco persistente e o Hyperdisk competem com o tráfego de transferência de dados de saída, 60% da largura de banda de rede de saída máxima é usada para o disco persistente e o Hyperdisk, e os restantes 40% podem ser usados para a transferência de dados de rede de saída. Para mais informações, consulte a secção Outros fatores que afetam o desempenho.
  • O desempenho do tamanho de E/S e da profundidade da fila depende das cargas de trabalho. Algumas cargas de trabalho podem não ser suficientemente grandes para usar os limites de desempenho de tamanho de E/S e profundidade da fila completos.
  • O tipo de máquina de uma VM afeta o respetivo desempenho de armazenamento. Para mais informações, consulte Tipo de máquina e número de vCPUs.

Para compreender o desempenho do armazenamento de uma VM, veja as métricas de desempenho para Débito, Operações (IOPS), Tamanho de E/S, Latência de E/S e Comprimento da fila.

A taxa de transferência do disco e os IOPS indicam se a carga de trabalho da VM está a funcionar como esperado. Se o débito ou os IOPS forem inferiores ao máximo esperado indicado no gráfico do tipo de disco, podem existir problemas de desempenho de tamanho de E/S, comprimento da fila ou latência de E/S.

Pode esperar que o tamanho de E/S esteja entre 4 e 16 KiB para cargas de trabalho que exijam IOPS elevados e baixa latência, e entre 256 KiB e 1 MiB para cargas de trabalho que envolvam tamanhos de gravação sequenciais ou grandes. O tamanho de E/S fora destes intervalos indica problemas de desempenho do disco.

O comprimento da fila, também conhecido como profundidade da fila, é um fator de débito e IOPS. Quando um disco tem um bom desempenho, o comprimento da respetiva fila deve ser aproximadamente igual ao comprimento da fila recomendado para atingir um determinado débito ou nível de IOPS, indicado no gráfico Profundidade da fila de E/S recomendada.

A latência de E/S depende do comprimento da fila e do tamanho de E/S. Se o comprimento da fila ou o tamanho de E/S de um disco for elevado, a latência também é elevada.

Se alguma métrica de desempenho de armazenamento indicar problemas de desempenho do disco, faça uma ou mais das seguintes ações: