Considerazioni sulle prestazioni

Questa pagina fornisce indicazioni sulla configurazione dell'ambiente Google Cloud Managed Lustre per ottenere le migliori prestazioni.

Specifiche delle prestazioni

I seguenti numeri di prestazioni sono valori massimi approssimativi.

IOPS

La scalabilità massima delle IOPS è lineare per TiB di capacità dell'istanza di cui è stato eseguito il provisioning.

Livello di throughput IOPS di lettura (per TiB) IOPS di scrittura (per TiB)
125 MBps per TiB 725 700
250 MBps per TiB 1450 1400
500 MBps per TiB 2900 2800
1000 MBps per TiB 5800 5600

Operazioni con metadati

Le operazioni con metadati massime aumentano in passaggi per 72 GBps di throughput di cui è stato eseguito il provisioning.

Statistiche dei file Creazioni di file Eliminazioni di file
Per 72 GBps 410.000 al secondo 115.000 al secondo 95.000 al secondo

Prestazioni dopo l'aumento della capacità

L'aumento della capacità di archiviazione di un'istanza esistente aumenta il throughput e le IOPS massimi e, possibilmente, le prestazioni dei metadati.

Le prestazioni del throughput di lettura migliorano gradualmente man mano che i nuovi dati vengono scritti e ridistribuiti nello spazio di archiviazione aggiuntivo. Le prestazioni del throughput di scrittura aumentano immediatamente.

Unità massima di trasmissione (MTU) della rete VPC

Quando crei la rete VPC, l'impostazione del valore di mtu (unità massima di trasmissione o la dimensione del pacchetto IP più grande che può essere trasmesso su questa rete) sul valore massimo consentito di 8896 migliora le prestazioni fino al 10% rispetto al valore predefinito di 1460 byte.

Puoi visualizzare il valore MTU corrente della tua rete con il seguente comando:

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

Il valore MTU di una rete può essere aggiornato dopo la creazione della rete, ma ci sono considerazioni importanti. Per i dettagli, consultaModificare l'MTU di una rete.

Tipi di macchine Compute Engine

Il throughput di rete può essere influenzato dalla scelta del tipo di macchina. In generale, per ottenere il miglior throughput:

  • Aumenta il numero di vCPU. La larghezza di banda in uscita massima per istanza è generalmente di 2 Gbps per vCPU, fino al massimo del tipo di macchina.
  • Seleziona una serie di macchine che supporta limiti di ingresso e uscita più elevati. Ad esempio, le istanze C2 con rete Tier_1 supportano una larghezza di banda in uscita fino a 100 Gbps. Le istanze C3 con rete Tier_1 supportano fino a 200 Gbps.
  • Attiva le prestazioni di rete Tier_1 per VM con tipi di macchine più grandi.
  • Utilizza Google Virtual NIC (gVNIC). gVNIC è l'unica opzione per i tipi di macchine di terza generazione e successivi. gVNIC è obbligatorio quando si utilizza la rete Tier_1.

Per informazioni dettagliate, consulta Larghezza di banda della rete.

Configurazione multi-NIC

Utilizzando la funzionalità multi-rail integrata di Lustre, i client possono suddividere il traffico di rete su più schede di interfaccia di rete (multi-NIC). In questo modo, la larghezza di banda viene aggregata per saturare le istanze Managed Lustre ad alta capacità.

Per configurare multi-NIC, devi:

  • Selezionare un tipo di macchina con più NIC fisiche.
  • Creare una subnet per ogni NIC e assegnare ogni NIC alla relativa subnet.
  • Seguire i passaggi multi-NIC quando ti connetti da Compute Engine o GKE.

Verificare il bilanciamento del traffico

Dopo aver configurato multi-NIC, verifica che i dati siano bilanciati correttamente.

Compute Engine

Verifica il bilanciamento dei dati direttamente sulla VM monitorando le interfacce di rete configurate (ad esempio, eth0 e eth1) utilizzando nload durante la generazione del traffico verso il backend Managed Lustre:

nload -m eth0 eth1

In una configurazione multi-NIC riuscita, i bit rate in uscita dovrebbero essere approssimativamente equivalenti su tutte le interfacce configurate.

GKE

Verifica che il traffico di rete del tuo workload sia bilanciato su più NIC eseguendo il deployment di un pod di debug di rete temporaneo sul nodo in cui è pianificato il workload:

  1. Identifica il nodo in cui è pianificato il workload:

    kubectl get pod POD_NAME -o wide
    

    Sostituisci POD_NAME con il nome del pod. Nell'output comando, prendi nota del nome nella colonna NODE.

  2. Avvia il debugger di rete su quel nodo:

    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"
    

    Sostituisci NODE_NAME con il nome del nodo del passaggio precedente.

  3. Nell'output, analizza i bit rate della colonna Outgoing per eth0 e eth1. Se la configurazione è riuscita, i bit rate sono approssimativamente equivalenti. L'output è simile al seguente:

    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. Esci dal debugger premendo Ctrl+C.

Misurare le prestazioni di un singolo client

Per testare le prestazioni di lettura e scrittura da un singolo client Compute Engine, utilizza lo strumento a riga di comando fio (Flexible I/O tester).

  1. Installa fio:

    Rocky 8

    sudo dnf install fio -y
    

    Ubuntu 20.04 e 22.04

    sudo apt update
    sudo install fio
    
  2. Esegui questo 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
    

Il completamento del test richiede circa 5 minuti. Al termine, vengono visualizzati i risultati. A seconda della configurazione, puoi prevedere un throughput fino a alla velocità di rete massima della VM e migliaia di IOPS per TiB.