Solução de problemas de desempenho em instâncias de computação


Neste documento, mostramos como diagnosticar e reduzir problemas de desempenho de CPU, memória e armazenamento em instâncias bare metal e máquinas virtuais (VMs) do Compute Engine.

Antes de começar

Ver métricas de desempenho

Para exibir as métricas de desempenho das instâncias da computação, use as métricas de observabilidade do Cloud Monitoring disponíveis no console do Google Cloud.

  1. No Console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar instâncias de VM

  2. É possível exibir as métricas de instâncias individuais ou das cinco instâncias que estão consumindo a maior quantidade de um recurso.

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

    1. Clique no nome da instância com as métricas de desempenho que você quer exibir. A página Detalhes da instância é aberta.

    2. Clique na guia Observabilidade para abrir a página Visão geral.

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

  3. Analise as métricas de desempenho da instância. Confira as seções Visão geral, CPU, Memória, Rede e Disco para consultar métricas detalhadas sobre cada tópico. Confira as seguintes principais métricas que indicam o desempenho da instância:

    • Na página Visão geral:

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

      • Utilização de memória. A porcentagem de memória usada pela instância, exceto caches de disco. Para instâncias que usam um SO Linux, isso 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 conexões com VMs/externas/Google. O número estimado de fluxos TCP/UDP distintos em um minuto, agrupados por tipo de peering.

      • Capacidade de disco. A taxa média de bytes gravados e lidos em discos.

      • IOPS de disco. A taxa média de operações de leitura/gravação de E/S em discos.

    • Na página Resumo da rede:

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

      • Recebido de VMs/externamente/Google. A taxa de tráfego de rede recebida de serviços do Google, de instâncias e de fontes externas, com base em uma amostra de pacotes. A métrica é dimensionada para que a soma corresponda ao tráfego de rede total recebido.

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

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

      • Pacotes de entrada de firewall negados. A taxa de pacotes de rede de entrada enviados à instância, mas que não foram recebidos por ela, porque foram negados pelas regras de firewall.

    • Na página Desempenho de discos:

      • Tamanho médio da E/S.: o tamanho médio das operações de leitura e gravação de E/S em discos. As E/S aleatórias e pequenas (4 a 16 KiB) geralmente são limitadas por IOPS e as E/S sequenciais ou grandes (256 KiB a 1 MiB) são limitadas pela capacidade de processamento.

      • Comprimento médio da fila. O número de operações de E/S de disco em fila e em execução, também chamadas de profundidade de fila, para os cinco principais dispositivos. Para atingir os limites de desempenho dos discos, use uma alta profundidade de fila de E/S. O Persistent Disk e o Google Cloud Hyperdisk são armazenamentos em rede e, em geral, têm maior latência em comparação com discos físicos ou discos SSD locais.

      • Latência média de E/S: a latência média das operações de leitura e gravação de E/S agregadas em operações de todos os discos anexados à instância, medida pelo agente de operações. Esse valor inclui a latência de processamento do sistema operacional e do sistema de arquivos, além de depender do comprimento da fila e do tamanho de E/S.

Entender as métricas de desempenho

O desempenho da instância é afetado pelo hardware em que ela é executada, pela carga de trabalho em execução nela e pelo respectivo tipo de máquina. Se o hardware não for compatível com a carga de trabalho ou o tráfego de rede da instância, o desempenho dela poderá ser afetado.

Desempenho da CPU e da memória

Detalhes de hardware

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

  • Cada CPU virtual (vCPU, na sigla em inglês) é implementada como uma única multithread de hardware em um processador de CPU.
  • Os processadores de CPU Intel Xeon são compatíveis com várias linhas de execução de aplicativos em um único núcleo de processador.
  • As VMs que usam tipos de máquina C2 têm mapeamento fixo de núcleo virtual para físico e expõem a arquitetura de célula NUMA ao SO convidado.
  • A maioria das VMs recebe a frequência turbo em todos os núcleos listada nas plataformas de CPU, mesmo que apenas a frequência base seja anunciada para o ambiente convidado.
  • Os tipos de máquina com núcleo compartilhado usam a alternância de contexto para compartilhar um núcleo físico entre vCPUs para multitarefa. Eles também oferecem recursos de bursting em que a utilização da CPU de uma VM pode ultrapassar 100%. Para mais informações, consulte Tipos de máquina com núcleo compartilhado.

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

Uma alta utilização consistente de CPU ou memória indica a necessidade de escalonar verticalmente o tamanho de uma VM. Se a VM usar mais de 90% da CPU ou da memória de forma constante, mude o tipo de máquina da VM para um tipo de máquina com mais vCPUs ou memória.

Desempenho da rede

Detalhes de hardware

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

  • Cada tipo de máquina tem um limite específico de largura de banda de saída. Para encontrar a largura de banda máxima de saída do tipo de máquina da instância, acesse a página correspondente à família de máquinas da instância.
  • Adicionar mais interfaces de rede ou endereços IP por interface de rede a uma VM não aumenta a largura de banda de rede de entrada ou saída da VM, mas é possível configurar alguns tipos de máquinas para maior largura de banda. Para mais informações, consulte Como configurar uma VM com maior largura de banda.

Para entender o desempenho de rede de uma instância, consulte as métricas de desempenho relativas a Total de pacotes de rede, Tamanho médio dos pacotes, Novas conexões com VMs/destinos externos/Google, Envios para VMs/destinos externos/Google, Recebimentos de VMs/destinos externos/Google e Pacotes de entrada negados pelo firewall.

Analise se os totais de pacotes de rede, o Tamanho médio do pacote e as Novas conexões com VMs/externos/Google são comuns para sua carga de trabalho. Por exemplo, um servidor da Web pode ter muitas conexões e pacotes pequenos, enquanto um banco de dados pode ter poucas conexões e pacotes grandes.

O tráfego de rede enviado de maneira consistente pode indicar a necessidade de alterar o tipo de máquina da VM para um tipo de máquina que tenha um limite de largura de banda de saída maior.

Se você observar um grande número de pacotes recebidos negados pelos firewalls, acesse a página Network Intelligence Firewall Insights no console do Google Cloud para saber mais sobre as origens dos pacotes negados.

Acesse a página Firewall Insights

Se você acha que seu próprio tráfego está sendo negado incorretamente pelos firewalls, tente executar testes de conectividade.

Se a instância enviar e receber uma grande quantidade de tráfego de instâncias em zonas ou regiões diferentes, considere modificar a carga de trabalho para manter mais dados em uma zona ou região com o objetivo de aumentar a latência e diminuir os custos. Para mais informações, consulte Preços da transferência de dados entre VMs no Google Cloud. Se a instância enviar uma grande quantidade de tráfego para outras na mesma zona, considere uma política de posicionamento compacto para alcançar baixa latência de rede.

Instâncias bare metal

Ao contrário das instâncias de VM, em uma instância bare metal, os estados de suspensão C6 e C1E não estão desativados. Isso pode fazer com que núcleos inativos entrem em suspensão, o que pode resultar na redução do desempenho de rede em instâncias bare metal. Se você precisar de desempenho total da largura de banda da rede, poderá desativar esses estados de suspensão no sistema operacional.

  • Use o seguintes script para desativar os estados de suspensão em uma instância bare metal C3 sem precisar reiniciá-la:

    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
    
  • Também é possível atualizar o arquivo de configuração GRUB para manter as mudanças ao reinicializar a 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 a reinicialização, 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 gerenciamento de memória de entrada/saída (IOMMU) é um recurso da CPU que fornece virtualização de endereço para dispositivos PCI. A IOMMU pode afetar negativamente o desempenho de rede quando há muitas falhas de I/O translation lookaside buffer (IOTLB).

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

Desempenho do armazenamento

Detalhes de hardware

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

  • O tamanho total de todos os discos permanentes combinados ao número de vCPUs determina o desempenho total do armazenamento. Se houver diferentes tipos de discos permanentes anexados a uma VM, o limite de desempenho do disco permanente SSD será compartilhado por todos os discos na VM. Para mais informações, consulte Desempenho do armazenamento em blocos.
  • Quando o disco permanente e o hiperdisco concorrem com o tráfego de transferência de dados de saída, 60% da largura de banda máxima da rede de saída é usada para o disco permanente e o hiperdisco, e os 40% restantes podem ser usados para a transferência de dados de rede de saída. Para mais informações, consulte Outros fatores que afetam o desempenho.
  • O tamanho de E/S e o desempenho da profundidade da fila dependem das cargas de trabalho. Talvez algumas cargas de trabalho não sejam grandes o suficiente para usar os limites de desempenho de E/S e de profundidade de fila completos.
  • O tipo de máquina de uma VM afeta o desempenho de armazenamento dela. Para mais informações, consulte Tipo de máquina e contagem de vCPUs.

Para entender o desempenho de armazenamento de uma VM, consulte as métricas de desempenho de Capacidade, Operações (IOPS), Tamanho de E/S, Latência de E/S e Comprimento da fila.

A capacidade do disco e as IOPS indicam se a carga de trabalho da VM está operando conforme o esperado. Se a capacidade ou as IOPS forem menores do que o máximo esperado no gráfico do tipo de disco, pode ser um sinal de problemas de desempenho do tamanho de E/S, comprimento da fila ou de latência de E/S.

O tamanho de E/S pode ser de 4 a 16 KiB para cargas de trabalho que exigem IOPS altas e baixa latência, e 256 KiB-1 MiB para cargas de trabalho que envolvem tamanhos de gravação sequenciais ou grandes. O tamanho de E/S fora desses intervalos indica problemas de desempenho de disco.

O tamanho da fila, também conhecido como profundidade, é um fator de capacidade e IOPS. Quando um disco tem um bom desempenho, o comprimento da fila precisa ser aproximadamente o mesmo que o recomendado para alcançar um determinado nível de capacidade ou IOPS, listado no gráfico Profundidade recomendada da fila de E/S.

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 alto, a latência também será alta.

Se alguma métrica de desempenho de armazenamento indicar problemas de desempenho de disco, siga pelo menos um destes procedimentos: