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:
Identifique o nó em que a carga de trabalho está programada:
kubectl get pod POD_NAME -o wideSubstitua POD_NAME pelo nome do pod. Na resposta ao comando, anote o nome na coluna
NODE.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.
Na saída, analise as taxas de bits da coluna Outgoing para
eth0eeth1. 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 GByteSaia 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.
Instale o fio:
Rocky 8
sudo dnf install fio -yUbuntu 20.04 e 22.04
sudo apt update sudo install fioExecute 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.