Questa pagina descrive come ottimizzare le prestazioni di Google Cloud NetApp Volumes modificando le configurazioni del volume e lato client. Queste modifiche migliorano il throughput, riducono la latenza e aumentano l'efficienza complessiva del trasferimento dei dati per le tue applicazioni.
Prima di iniziare
Prima di apportare modifiche ai volumi per ottimizzare le prestazioni, esamina le considerazioni sulle prestazioni.
Modificare le impostazioni del volume
Puoi ottimizzare le prestazioni modificando le seguenti impostazioni del volume:
Aumentare la capacità del volume: puoi aumentare la capacità del volume del livello di servizio Premium, Extreme o Standard per migliorare il throughput massimo raggiungibile del volume. Per i volumi del livello di servizio Flex File, aumenta invece la capacità del pool di archiviazione. Per Flex Unified o Flex File con prestazioni personalizzate, aumenta il throughput e le IOPS del pool di archiviazione.
Eseguire l'upgrade del livello di servizio: puoi spostare un volume del livello di servizio Premium in un pool di archiviazione con un livello di servizio Extreme per migliorare il throughput.
Utilizzare i pool QoS manuali per assegnare un throughput maggiore: puoi diminuire il throughput assegnato dei volumi più grandi con requisiti di throughput bassi e aumentare il throughput dei volumi più piccoli che richiedono prestazioni più elevate fino a throughput del pool disponibile.
L'aumento della capacità del volume e l'upgrade dei livelli di servizio non interrompono i carichi di lavoro I/O in corso sul volume e non influiscono in alcun modo sull'accesso al volume.
Modificare il client
Puoi migliorare le prestazioni modificando le seguenti impostazioni sul client:
Collocare i client: i risultati della latenza sono influenzati direttamente dalle funzionalità e dalla località del client. Per risultati ottimali, posiziona il client nella stessa regione del volume o il più vicino possibile. Verifica l'impatto zonale testando la latenza da un client in ogni zona e utilizza la zona con la latenza più bassa.
Configurare la larghezza di banda di rete di Compute Engine: le funzionalità di rete delle macchine virtuali Compute Engine dipendono dal tipo di istanza utilizzato. In genere, le istanze più grandi possono generare un throughput di rete maggiore. Ti consigliamo di selezionare una macchina virtuale client con una capacità di larghezza di banda di rete appropriata, selezionare l'interfaccia di rete Google Virtual NIC (gVNIC) e attivare le prestazioni
Tier_1. Per ulteriori informazioni, consulta la documentazione di Compute Engine sulla larghezza di banda di rete.Aprire più sessioni TCP: se la tua applicazione richiede un throughput elevato, puoi saturare la singola sessione del protocollo TCP (Transmission Control Protocol) sottostante a una normale sessione NFS e SMB. In questi casi, aumenta il numero di sessioni TCP utilizzate dalla connessione NFS e SMB.
Utilizza una delle seguenti schede per modificare il client in base al tipo di client:
Linux
In genere, un client NFS utilizza una singola sessione TCP per tutti i file system montati su NFS che condividono un endpoint di archiviazione. L'utilizzo dell'
nconnectopzione di montaggio consente di aumentare il numero di sessioni TCP supportate fino a un massimo di 16.Ti consigliamo di seguire le seguenti best practice per modificare il tipo di client Linux in modo da sfruttare appieno
nconnect:Aumentare il numero di sessioni TCP con
nconnect: ogni sessione TCP aggiuntiva aggiunge una coda per 128 richieste in sospeso, migliorando la potenziale concorrenza.Impostare il parametro
sunrpc.max_tcp_slot_table_entries:sunrpc.max_tcp_slot_table_entriesè un parametro di modifica a livello di connessione che puoi modificare per controllare le prestazioni. Ti consigliamo di impostaresunrpc.max_tpc_slot_table_enteriessu 128 richieste o per connessione e di non superare i 10.000 slot per tutti i client NFS all'interno di un singolo progetto che si connettono a NetApp Volumes. Per impostare il parametrosunrpc.max_tcp_slot_table_entries, aggiungilo al file/etc/sysctl.confe ricarica il file dei parametri utilizzando il comandosysctl -p.Ottimizzare il valore massimo supportato per sessione a 180: a differenza di NFSv3, i client NFSv4.1 definiscono la relazione tra client e server nelle sessioni. Mentre NetApp Volumes supporta fino a 128 richieste in sospeso per connessione utilizzando NFSv3, NFSv4.1 è limitato a 180 richieste in sospeso per sessione. Per impostazione predefinita, i client NFSv4.1 di Linux utilizzano
64 max_session_slotsper sessione, ma puoi ottimizzare questo valore in base alle esigenze. Ti consigliamo di modificare il valore massimo supportato per sessione a 180.Per ottimizzare
max_session_slots, crea un file di configurazione in/etc/modprobe.d. Assicurati che non siano presenti virgolette (" ") in linea. In caso contrario, l'opzione non avrà effetto.$ echo "options nfs max_session_slots=180" > /etc/modprobe/d/nfsclient/conf $ reboot Use the systool -v -m nfs command to see the current maximum in use by the client. For the command to work, at least one NFSv4.1 mount must be in place. $ systool -v -v nfs { Module = "nfs" … Parameters: … Max_session_slots = "63" <- … }
Il seguente grafico di confronto di
nconnectNFS mostra l'impatto che l'utilizzo della configurazione nconnect può avere su un carico di lavoro NFS. Queste informazioni sono state acquisite utilizzando Fio con le seguenti impostazioni:Carico di lavoro di lettura al 100%
Dimensione del blocco di 8 KiB su un singolo volume
Macchina virtuale
n2-standard-32con sistema operativo Red Hat 9Set di lavoro di 6 TiB
L'utilizzo di un valore
nconnectpari a 16 ha comportato prestazioni cinque volte superiori rispetto a quando non era attivato.
Windows
Per i client basati su Windows, il client può utilizzare SMB Multichannel con RSS (Receive Side Scaling) per aprire più connessioni TCP. Per ottenere questa configurazione, la macchina virtuale deve avere una scheda di rete allocata che supporti RSS. Ti consigliamo di impostare RSS su quattro o otto valori, ma qualsiasi valore superiore a uno dovrebbe aumentare il throughput.
Il seguente grafico mostra la differenza che l'utilizzo della configurazione RSS può avere su un carico di lavoro SMB. Queste informazioni sono state acquisite utilizzando Fio con le seguenti impostazioni:
Carico di lavoro di lettura al 100%
Dimensione del blocco di 8 KiB su un singolo volume
Singola macchina virtuale
n2-standard-32con sistema operativo Windows 2022Set di lavoro di 6 TiB
Sono stati eseguiti otto job con la sola opzione RSS del client SMB che cambiava tra le esecuzioni di test. L'utilizzo di valori RSS pari a 4, 8 e 16 ha raddoppiato le prestazioni rispetto all'utilizzo di un valore pari a 1. Ogni istanza RSS è stata eseguita nove volte con un parametro
numjobspari a 8. Il parametroiodepthè stato aumentato di cinque a ogni esecuzione fino al raggiungimento del throughput massimo.
Carichi di lavoro di computing ad alte prestazioni e ad alta concorrenza
Per i carichi di lavoro NFS su larga scala e ad alta concorrenza, come quelli che si trovano negli ambienti di computing ad alte prestazioni (HPC) o EDA, valuta la possibilità di applicare le seguenti ottimizzazioni lato client per migliorare le prestazioni e la stabilità e prevenire problemi come tempeste di metadati o blocchi del client:
Opzioni di montaggio NFS: quando monti la condivisione NFS di NetApp Volumes, includi le seguenti opzioni nel comando
/etc/fstabo di montaggio:actimeo=600: aumenta il tempo di memorizzazione nella cache degli attributi sul client, riducendo le chiamateGETATTR.nconnect=8: utilizza più connessioni TCP per montaggio, migliorando la larghezza di banda.
Esempio di comando di montaggio:
sudo mount -t nfs -o rw,hard,intr,rsize=1048576,wsize=1048576,vers=3,tcp,actimeo=600,nconnect=8 SERVER:/SHARE /mnt/netappImpostazioni
keepaliveTCP: modifica ilkeepalivedel sistema per rilevare più rapidamente le connessioni che non rispondono. Puoi impostarlo utilizzandosysctl:sudo sysctl -w net.ipv4.tcp_keepalive_time=60Per rendere permanente questa modifica dopo i riavvii, aggiungi
net.ipv4.tcp_keepalive_time = 60a/etc/sysctl.confe ricarica consudo sysctl -p.
QoS manuale
La qualità del servizio (QoS) manuale in NetApp Volumes consente di modificare le prestazioni del volume in base ai requisiti del carico di lavoro e di controllare i costi di archiviazione.
La QoS manuale offre i seguenti vantaggi:
Ottimizzazione dei costi: ridimensiona le prestazioni del volume in base alla capacità del pool di archiviazione per ottimizzare i costi del cloud.
Modifica istantanea del throughput: modifica il throughput del volume senza tempi di inattività.
Riduzione dei costi di disaster recovery: riduci la QoS per i volumi replicati per ridurre i costi di ripristino di emergenza per i pool di destinazione.
Prestazioni migliorate per cloni o cache: aumenta le prestazioni per i volumi di cloni o cache con dimensioni allocate ridotte.
Gestione flessibile dei carichi di lavoro: utilizza pool di archiviazione più grandi come container per più carichi di lavoro, modificando il throughput di ogni volume in base alle esigenze.
Considerazioni
Puoi gestire la QoS manuale utilizzando Google Cloud CLI, l'API NetApp Volumes o Terraform. La Google Cloud console non è supportata.
La QoS manuale è supportata per i livelli di servizio Flex Unified, Standard, Premium ed Extreme e non è disponibile per il livello di servizio Flex File.
Configurare i limiti di QoS manuale
Per i volumi all'interno di un pool di archiviazione QoS manuale, puoi impostare il throughput e la capacità in modo indipendente. Il throughput complessivo di tutti i volumi in un pool QoS manuale è limitato dal throughput totale del pool. Il throughput del pool è determinato dalla capacità allocata e dal livello di servizio. Ad esempio, un pool Premium da 40 TiB può raggiungere un throughput massimo di 2560 MiBps a 64 MiBps per TiB, mentre un pool Extreme da 200 TiB può supportare volumi con un throughput combinato di 25.600 MiBps.
Una volta configurato il pool QoS manuale, puoi impostare il limite di throughput richiesto per ogni volume al suo interno. Il limite di throughput massimo per un singolo volume è 4, 5 GiBps o 30 GiBps per i volumi di grande capacità.
I comandi o le API del pool e del volume mostrano i valori di throughput disponibili e assegnati per il pool per aiutarti a gestire il throughput totale. Per creare un pool QoS manuale e definire il throughput del volume, consulta Creare un pool di archiviazione e Creare un volume.
Creare un pool di archiviazione
gcloud
Crea un pool di archiviazione utilizzando la QoS manuale:
gcloud netapp storage-pools create POOL_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --capacity=CAPACITY \ --service-level=SERVICE_LEVEL \ --qos-type=QOS_TYPE \ --network=name=NETWORK_NAME
Sostituisci le seguenti informazioni:
POOL_NAME: il nome del pool che vuoi creare. Il nome del pool deve essere univoco per località.PROJECT_ID: il nome del progetto in cui vuoi creare il pool di archiviazione.LOCATION: la località del pool che vuoi creare.CAPACITY: la capacità del pool in GiB.SERVICE_LEVEL: il livello di servizio per il pool di archiviazione: Standard, Premium o Extreme.QOS_TYPE: il tipo di QoS del pool di archiviazione: automatico o manuale.NETWORK_NAME: il nome del VPC.
Modificare un pool di archiviazione
gcloud
Modifica un pool di archiviazione QoS automatico esistente per utilizzare la QoS manuale:
gcloud netapp storage-pools update POOL_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --qos-type=QOS_TYPE
Sostituisci le seguenti informazioni:
POOL_NAME: il nome del pool che vuoi aggiornare.PROJECT_ID: il nome del progetto.LOCATION: la località del pool.QOS_TYPE: il tipo di QoS aggiornato per il pool di archiviazione. È supportata solo la configurazione manuale.
Creare un volume
gcloud
Crea un volume con il limite di throughput QoS manuale specificato utilizzando il seguente comando:
gcloud netapp volumes create VOLUME_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --storage-pool=STORAGE_POOL \ --capacity=CAPACITY \ --protocols=PROTOCOLS \ --share-name=SHARE_NAME \ --throughput-mibps=THROUGHPUT_MIBPS
Sostituisci le seguenti informazioni:
VOLUME_NAME: il nome del volume. Questo nome deve essere univoco per località.PROJECT_ID: il nome del progetto in cui creare il volume.LOCATION: la località del volume.STORAGE_POOL: il pool di archiviazione in cui creare il volume.CAPACITY: la capacità del volume. Definisce la capacità visualizzata dai client NAS.PROTOCOLS: scegli i protocolli NAS con cui viene esportato il volume. Le scelte valide sono NFSv3, NFSv4, SMB e le seguenti combinazioni:nfsv3,nfsv4nfsv3,smbnfsv4,smb
A seconda del tipo di protocollo scelto, ti consigliamo di aggiungere i parametri specifici del protocollo, come
export-policyosmb-settings.SHARE_NAME: il percorso di esportazione NFS o il nome della condivisione SMB del volume.THROUGHPUT_MIBPS: il limite di throughput del volume in MiBps.
Passaggi successivi
Scopri di più sulla migrazione dei volumi.