Considerações sobre desempenho

Esta página oferece orientações sobre como configurar o ambiente do Google Cloud Managed Lustre para ter o melhor desempenho.

Especificações de performance

Os números de performance a seguir são valores máximos aproximados.

IOPS

O máximo de IOPS é escalonado linearmente por TiB de capacidade da instância provisionada.

Nível de capacidade de processamento IOPS de leitura (por TiB) IOPS de gravação (por TiB)
125 MBps per TiB 725 700
250 MBps per TiB 1.450 1.400
500 MBps per TiB 2.900 2.800
1000 MBps per TiB 5.800 5.600

Operações de metadados

O número máximo de operações de metadados aumenta em etapas por 72 GBps de capacidade de processamento provisionada.

Estatísticas de arquivos Criações de arquivos Exclusões de arquivos
Por 72 GBps 410.000 por segundo 115.000 por segundo 95.000 por segundo

Performance após o aumento da capacidade

Aumentar a capacidade de armazenamento de uma instância aumenta a capacidade de processamento e as IOPS máximas e, possivelmente, a performance de metadados.

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

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

Ao criar a 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 a performance em até 10% em comparação com o valor padrão de 1.460 bytes.

É possível conferir o valor atual da MTU da rede com o comando a seguir:

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

O valor da MTU de uma rede pode ser atualizado após a criação dela, 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 ter 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. A gVNIC é necessária ao usar a rede Tier_1.

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

Configuração de várias NICs

Ao usar o recurso multirrail integrado do Lustre, os clientes podem distribuir 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, é necessário:

  • Selecionar um tipo de máquina com várias NICs físicas.
  • Criar uma sub-rede para cada NIC e atribuir cada NIC à sub-rede.
  • Siga as etapas de várias NICs ao se conectar de 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 de várias NICs bem-sucedida, as taxas de bits de saída precisam 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 de depurador de rede temporário no nó em que a carga de trabalho está programada:

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

    kubectl get pod POD_NAME -o wide
    

    Substitua POD_NAME pelo nome do pod. Na resposta ao comando, anote 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 Outgoing 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. Saia do depurador pressionando Ctrl+C.

Como medir a performance de um único cliente

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

  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 aproximadamente 5 minutos para ser concluído. Quando terminar, os resultados serão exibidos. Dependendo da configuração, você pode esperar uma capacidade de processamento de até a velocidade máxima da rede da VM e milhares de IOPS por TiB.