Cette page explique comment optimiser les performances de Google Cloud NetApp Volumes en ajustant les configurations côté volume et côté client. Ces ajustements améliorent le débit, réduisent la latence et renforcent l'efficacité globale du transfert de données pour vos applications.
Avant de commencer
Avant d'apporter des modifications à vos volumes pour optimiser les performances, consultez les points à prendre en compte concernant les performances.
Ajuster les paramètres du volume
Vous pouvez optimiser les performances en ajustant les paramètres de volume suivants :
Augmenter la capacité du volume : vous pouvez augmenter la capacité de votre volume de niveau de service Premium, Extrême ou Standard pour améliorer le débit maximal réalisable du volume Pour les volumes du niveau de service Flex File, augmentez plutôt la capacité du pool de stockage. Pour les performances personnalisées Flex Unified ou Flex File, augmentez le débit et les IOPS du pool de stockage.
Mettre à niveau votre niveau de service : vous pouvez déplacer un volume de niveau de service Premium vers un pool de stockage avec un niveau de service Extrême pour améliorer le débit.
Utiliser des pools QoS manuels pour attribuer un débit plus élevé : vous pouvez réduire le débit attribué aux volumes plus volumineux avec des exigences de débit faibles et augmenter le débit des volumes plus petits qui nécessitent des performances plus élevées jusqu'au débit de pool disponible.
L'augmentation de la capacité du volume et la mise à niveau des niveaux de service ne perturbent pas les charges de travail d'E/S en cours sur le volume et n'affectent en aucun cas l'accès au volume.
Ajuster le client
Vous pouvez améliorer les performances en ajustant les paramètres suivants sur le client :
Colocaliser les clients : les résultats de latence sont directement affectés par les capacités et l'emplacement du client. Pour obtenir les meilleurs résultats, placez le client dans la même région que le volume ou aussi près que possible. Testez l'impact zonal en testant la latence à partir d'un client dans chaque zone et utilisez la zone avec la latence la plus faible.
Configurer la bande passante réseau Compute Engine : les capacités réseau des machines virtuelles Compute Engine dépendent du type d'instance utilisé. En règle générale, les instances plus volumineuses peuvent générer un débit réseau plus élevé. Nous vous recommandons de sélectionner une machine virtuelle cliente avec une capacité de bande passante réseau appropriée, de sélectionner l'interface réseau Google Virtual NIC (gVNIC) et d'activer les performances
Tier_1. Pour en savoir plus, consultez la documentation Compute Engine sur la bande passante réseau.Ouvrir plusieurs sessions TCP : si votre application nécessite un débit élevé, vous pouvez finir par saturer la session unique de protocole de contrôle de transmission (TCP) qui sous-tend une session NFS et SMB normale. Dans ce cas, augmentez le nombre de sessions TCP utilisées par votre connexion NFS et SMB.
Utilisez l'un des onglets suivants pour ajuster votre client en fonction de son type :
Linux
Traditionnellement, un client NFS utilise une seule session TCP pour tous les systèmes de fichiers montés sur NFS qui partagent un point de terminaison de stockage. L'option de montage
nconnect`nconnect` vous permet d'augmenter le nombre de sessions TCP compatibles jusqu'à un maximum de 16.Nous vous recommandons de suivre les bonnes pratiques ci-dessous pour ajuster votre type de client Linux afin de tirer pleinement parti de
nconnect:Augmenter le nombre de sessions TCP avec
nconnect: chaque session TCP supplémentaire ajoute une file d'attente pour 128 requêtes en attente, ce qui améliore la simultanéité potentielle.Définir le paramètre
sunrpc.max_tcp_slot_table_entries:sunrpc.max_tcp_slot_table_entriesest un paramètre d'ajustement au niveau de la connexion que vous pouvez modifier pour contrôler les performances. Nous vous recommandons de définirsunrpc.max_tpc_slot_table_enteriessur 128 requêtes ou par connexion et de ne pas dépasser 10 000 emplacements pour tous les clients NFS d'un même projet se connectant à NetApp Volumes. Pour définir le paramètresunrpc.max_tcp_slot_table_entries, ajoutez-le à votre fichier/etc/sysctl.confet rechargez le fichier de paramètres à l'aide de la commandesysctl -p.Ajuster la valeur maximale acceptée par session sur 180 : contrairement à NFSv3, les clients NFSv4.1 définissent la relation entre le client et le serveur dans les sessions. Alors que NetApp Volumes accepte jusqu'à 128 requêtes en attente par connexion à l'aide de NFSv3, NFSv4.1 est limité à 180 requêtes en attente par session. Les clients Linux NFSv4.1 sont définis par défaut sur
64 max_session_slotspar session, mais vous pouvez ajuster cette valeur si nécessaire. Nous vous recommandons de modifier la valeur maximale acceptée par session sur 180.Pour ajuster
max_session_slots, créez un fichier de configuration sous/etc/modprobe.d. Assurez-vous qu'aucun guillemet (" ") n'apparaît en ligne. Sinon, l'option n'est pas prise en compte.$ 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" <- … }
Le graphique de comparaison NFS
nconnectsuivant illustre l'impact que l'utilisation de la configuration nconnect peut avoir sur une charge de travail NFS. Ces informations ont été capturées à l'aide de Fio avec les paramètres suivants :Charge de travail de lecture à 100 %
Taille de bloc de 8 Kio par rapport à un seul volume
Machine virtuelle
n2-standard-32exécutant le système d'exploitation Red Hat 9Ensemble de travail de 6 Tio
L'utilisation d'une valeur
nconnectde 16 a permis d'obtenir des performances cinq fois supérieures à celles obtenues lorsque cette valeur n'était pas activée.
Windows
Pour les clients basés sur Windows, le client peut utiliser SMB Multichannel avec la mise à l'échelle côté réception (RSS) pour ouvrir plusieurs connexions TCP. Pour obtenir cette configuration, votre machine virtuelle doit disposer d'une carte réseau allouée compatible avec RSS. Nous vous recommandons de définir RSS sur quatre ou huit valeurs. Toutefois, toute valeur supérieure à un devrait augmenter le débit.
Le graphique suivant illustre la différence que l'utilisation de la configuration RSS peut avoir sur une charge de travail SMB. Ces informations ont été capturées à l'aide de Fio avec les paramètres suivants :
Charge de travail de lecture à 100 %
Taille de bloc de 8 Kio par rapport à un seul volume
Machine virtuelle
n2-standard-32unique exécutant un système d'exploitation Windows 2022Ensemble de travail de 6 Tio
Huit tâches ont été exécutées, seule l'option RSS du client SMB changeant entre les exécutions de test. L'utilisation de valeurs RSS de 4, 8 et 16 a doublé les performances par rapport à l'utilisation d'une valeur de 1. Chaque instance RSS a été exécutée neuf fois avec un paramètre
numjobsde 8. Le paramètreiodeptha été augmenté de cinq à chaque exécution jusqu'à ce que le débit maximal soit atteint.
Charges de travail de calcul hautes performances et à forte simultanéité
Pour les charges de travail NFS à grande échelle et à forte simultanéité, telles que celles que l'on trouve dans les environnements de calcul hautes performances (HPC) ou EDA, envisagez d'appliquer les optimisations côté client suivantes pour améliorer les performances et la stabilité, et éviter les problèmes tels que les tempêtes de métadonnées ou les blocages de clients :
Options de montage NFS : lorsque vous montez le partage NFS NetApp Volumes, incluez les options suivantes dans votre
/etc/fstabou commande de montage :actimeo=600: augmente le temps pendant lequel les attributs sont mis en cache sur le client, ce qui réduit les appelsGETATTR.nconnect=8: utilise plusieurs connexions TCP par montage, ce qui améliore la bande passante.
Exemple de commande de montage :
sudo mount -t nfs -o rw,hard,intr,rsize=1048576,wsize=1048576,vers=3,tcp,actimeo=600,nconnect=8 SERVER:/SHARE /mnt/netappParamètres
keepaliveTCP : ajustez lekeepaliveTCP du système pour détecter plus rapidement les connexions qui ne répondent pas. Vous pouvez définir ce paramètre à l'aide desysctl:sudo sysctl -w net.ipv4.tcp_keepalive_time=60Pour que cette modification soit conservée après les redémarrages, ajoutez
net.ipv4.tcp_keepalive_time = 60à/etc/sysctl.confet rechargez avecsudo sysctl -p.
QoS manuelle
La qualité de service (QoS) manuelle dans NetApp Volumes vous permet d'ajuster les performances du volume pour répondre aux exigences de la charge de travail et contrôler les coûts de stockage.
La QoS manuelle offre les avantages suivants :
Optimisation des coûts : adaptez les performances du volume à la capacité de votre pool de stockage pour optimiser les coûts cloud.
Ajustement instantané du débit : ajustez le débit du volume sans temps d'arrêt.
Réduction des coûts de reprise après sinistre : réduisez la QoS pour les volumes répliqués afin de diminuer les coûts de reprise après sinistre pour les pools de destination.
Amélioration des performances pour les clones ou les caches : augmentez les performances des volumes de clone ou de cache avec de petites tailles allouées.
Gestion flexible des charges de travail : utilisez des pools de stockage plus volumineux comme conteneurs pour plusieurs charges de travail, en ajustant le débit de chaque volume selon vos besoins.
Remarques
Vous pouvez gérer la QoS manuelle à l'aide de Google Cloud CLI, de l'API NetApp Volumes ou de Terraform. La Google Cloud console n'est pas compatible.
La QoS manuelle est compatible avec les niveaux de service Flex Unified, Standard, Premium et Extrême, mais n'est pas disponible pour le niveau de service Flex File.
Configurer des limites de QoS manuelle
Pour les volumes d'un pool de stockage QoS manuel, vous pouvez définir le débit et la capacité indépendamment. Le débit global de tous les volumes d'un pool QoS manuel est limité par le débit total du pool. Le débit du pool est déterminé par sa capacité allouée et son niveau de service. Par exemple, un pool Premium de 40 Tio peut atteindre un débit maximal de 2 560 Mio/s à 64 Mio/s par Tio, tandis qu'un pool Extrême de 200 Tio peut accepter des volumes avec un débit combiné de 25 600 Mio/s.
Une fois le pool QoS manuel configuré, vous pouvez définir la limite de débit requise pour chaque volume qu'il contient. La limite de débit maximale pour un seul volume est de 4,5 Gio/s, ou de 30 Gio/s pour les volumes de grande capacité.
Les commandes ou API de pool et de volume affichent les valeurs de débit disponibles et attribuées pour le pool afin de vous aider à gérer le débit total. Pour créer un pool QoS manuel et définir le débit du volume, consultez Créer un pool de stockage et Créer un volume.
Créer un pool de stockage
gcloud
Créez un pool de stockage à l'aide de la QoS manuelle :
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
Remplacez les informations suivantes :
POOL_NAME: nom du pool que vous souhaitez créer. Le nom de votre pool doit être unique par emplacement.PROJECT_ID: nom du projet dans lequel vous souhaitez créer le pool de stockage.LOCATION: emplacement du pool que vous souhaitez créer.CAPACITY: capacité du pool en Gio.SERVICE_LEVEL: niveau de service de votre pool de stockage : Standard, Premium ou Extrême.QOS_TYPE: type de QoS de votre pool de stockage : automatique ou manuel.NETWORK_NAME: nom du VPC.
Modifier un pool de stockage
gcloud
Modifiez un pool de stockage QoS automatique existant pour utiliser la QoS manuelle :
gcloud netapp storage-pools update POOL_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --qos-type=QOS_TYPE
Remplacez les informations suivantes :
POOL_NAME: nom du pool que vous souhaitez modifier.PROJECT_ID: nom du projet.LOCATION: emplacement du pool.QOS_TYPE: type de QoS mis à jour pour votre pool de stockage. Seule la configuration manuelle est acceptée.
Créer un volume
gcloud
Créez un volume avec une limite de débit QoS manuelle spécifiée à l'aide de la commande suivante :
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
Remplacez les informations suivantes :
VOLUME_NAME: nom du volume. Ce nom doit être unique par emplacement.PROJECT_ID: nom du projet dans lequel créer le volume.LOCATION: emplacement du volume.STORAGE_POOL: pool de stockage dans lequel créer le volume.CAPACITY: capacité du volume. Elle définit la capacité que voient les clients NAS.PROTOCOLS: choisissez les protocoles NAS avec lesquels le volume est exporté. Les choix valides sont NFSv3, NFSv4, SMB et les combinaisons suivantes :nfsv3,nfsv4nfsv3,smbnfsv4,smb
Selon le type de protocole que vous choisissez, nous vous recommandons d'ajouter les paramètres spécifiques au protocole, tels que
export-policyousmb-settings.SHARE_NAME: chemin d'exportation NFS ou nom de partage SMB du volume.THROUGHPUT_MIBPS: limite de débit du volume en Mio/s.
Pour en savoir plus sur les options facultatives supplémentaires, consultez la documentation du SDK Google Cloud sur la création de volumes.
Étape suivante
Découvrez la migration de volumes.