Considerações sobre desempenho

Nesta página, você encontra orientações sobre como configurar seu ambiente do Google Cloud Managed Lustre para ter o melhor desempenho.

Para conferir números de desempenho específicos de cada nível, consulte Níveis de desempenho.

Performance após aumentar a capacidade

Aumentar a capacidade de armazenamento de uma instância atual aumenta a capacidade de processamento e as IOPS máximas, além de melhorar o desempenho dos metadados.

O desempenho da capacidade de processamento de leitura melhora gradualmente à medida que novos dados são gravados e redistribuídos no armazenamento adicional. O desempenho da capacidade de processamento de gravação aumenta imediatamente.

Unidade máxima de transmissão (MTU) da rede VPC

Ao criar sua rede VPC, definir o valor de mtu (unidade máxima de transmissão ou o tamanho do maior pacote IP que pode ser transmitido nessa rede) como o valor máximo permitido de 8.896 melhora o desempenho em até 10% em comparação com o valor padrão de 1.460 bytes.

Para conferir o valor atual da MTU da sua rede, use este comando:

gcloud compute networks describe NETWORK_NAME --format="value(mtu)"

O valor de MTU de uma rede pode ser atualizado depois que ela é criada, mas há considerações importantes. Consulte Mudar a MTU de uma rede para mais detalhes.

tipos de máquina do Compute Engine

A capacidade de processamento da rede pode ser afetada pela escolha do tipo de máquina. Em geral, para conseguir a melhor capacidade de processamento:

  • Aumentar o número de vCPUs. A largura de banda de saída máxima por instância geralmente é de 2 Gbps por vCPU, até o máximo do tipo de máquina.
  • Selecione uma série de máquinas que ofereça suporte a limites de entrada e saída mais altos. Por exemplo, as instâncias C2 com rede Tier_1 oferecem suporte a até 100 Gbps de largura de banda de saída. As instâncias C3 com rede Tier_1 oferecem suporte a até 200 Gbps.
  • Ative o desempenho de rede por VM de Tier_1 com tipos de máquinas maiores.
  • Use a NIC virtual do Google (gVNIC). A gVNIC é a única opção para tipos de máquinas da geração 3 e mais recentes. Ela é necessária ao usar a rede de nível 1.

Para informações detalhadas, consulte Largura de banda de rede.

Configuração de várias NICs

Ao usar a capacidade multirrail integrada do Lustre, os clientes podem dividir o tráfego de rede em várias placas de rede (multi-NIC). Isso agrega largura de banda para saturar instâncias do Managed Lustre de alta capacidade.

Para configurar várias NICs, você precisa:

  • Selecione um tipo de máquina com várias NICs físicas.
  • Crie uma sub-rede para cada NIC e atribua cada NIC à respectiva sub-rede.
  • Siga as etapas de várias NICs ao se conectar pelo Compute Engine ou GKE.

Verificar o balanceamento de tráfego

Depois de configurar várias NICs, verifique se os dados estão sendo balanceados corretamente.

Compute Engine

Verifique o balanceamento de dados diretamente na VM monitorando as interfaces de rede configuradas (por exemplo, eth0 e eth1) usando nload ao gerar tráfego para o back-end do Managed Lustre:

nload -m eth0 eth1

Em uma configuração bem-sucedida com várias placas de rede, as taxas de bits de saída devem ser aproximadamente equivalentes em todas as interfaces configuradas.

GKE

Confirme se o tráfego de rede da carga de trabalho está balanceado em várias NICs implantando um pod network-debugger temporário no nó em que a carga de trabalho está programada:

  1. Identifique o nó em que sua carga de trabalho está programada:

    kubectl get pod POD_NAME -o wide
    

    Substitua POD_NAME pelo nome do pod. Na resposta ao comando, observe o nome na coluna NODE.

  2. Inicie o depurador de rede nesse nó:

    kubectl run multi-nic-debug --rm -i --tty --image=nicolaka/netshoot \
      --overrides='{"spec": {"hostNetwork": true, "nodeSelector": {"kubernetes.io/hostname": "NODE_NAME"}, "tolerations": [{"key": "nvidia.com/gpu", "operator": "Exists", "effect": "NoSchedule"}]}}' \
      -- /bin/bash -c "apk update && apk add nload && nload -m eth0 eth1"
    

    Substitua NODE_NAME pelo nome do nó da etapa anterior.

  3. Na saída, analise as taxas de bits da coluna Saída para eth0 e eth1. Se a configuração for bem-sucedida, as taxas de bits serão aproximadamente equivalentes. O resultado será o seguinte:

    Device eth0 [10.1.0.50] (1/2):
    ==========================================================================
    Incoming:                               Outgoing:
    Curr: 1.63 MBit/s                       Curr: 1.46 GBit/s
    Avg: 1.60 MBit/s                        Avg: 1.44 GBit/s
    Min: 1.40 MBit/s                        Min: 1.25 GBit/s
    Max: 1.64 MBit/s                        Max: 1.47 GBit/s
    Ttl: 590.94 GByte                       Ttl: 405.19 GByte
    
    Device eth1 [172.16.15.5] (2/2):
    ==========================================================================
    Incoming:                               Outgoing:
    Curr: 1.64 MBit/s                       Curr: 1.47 GBit/s
    Avg: 1.62 MBit/s                        Avg: 1.44 GBit/s
    Min: 1.42 MBit/s                        Min: 1.26 GBit/s
    Max: 1.66 MBit/s                        Max: 1.47 GBit/s
    Ttl: 587.68 GByte                       Ttl: 406.36 GByte
    
  4. Para sair do depurador, pressione Ctrl+C.

Como medir a performance de um único cliente

Para testar o desempenho de leitura e gravação de um único cliente do Compute Engine, use a ferramenta de linha de comando fio (Testador de E/S flexível).

  1. Instale o fio:

    Rocky 8

    sudo dnf install fio -y
    

    Ubuntu 20.04 e 22.04

    sudo apt update
    sudo install fio
    
  2. Execute este comando:

    fio --ioengine=libaio --filesize=32G --ramp_time=2s \
    --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
    --group_reporting --directory=/lustre --buffer_compress_percentage=50 \
    --name=read --blocksize=1m --iodepth=64 --readwrite=read
    

O teste leva cerca de 5 minutos. Quando terminar, os resultados serão exibidos. Dependendo da sua configuração, é possível ter uma capacidade de processamento de até a velocidade máxima de rede da VM e milhares de IOPS por TiB.