Optimiser les performances

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_entries est un paramètre d'ajustement au niveau de la connexion que vous pouvez modifier pour contrôler les performances. Nous vous recommandons de définir sunrpc.max_tpc_slot_table_enteries sur 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ètre sunrpc.max_tcp_slot_table_entries, ajoutez-le à votre fichier /etc/sysctl.conf et rechargez le fichier de paramètres à l'aide de la commande sysctl -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_slots par 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 nconnect suivant 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-32 exécutant le système d'exploitation Red Hat 9

    • Ensemble de travail de 6 Tio

    L'utilisation d'une valeur nconnect de 16 a permis d'obtenir des performances cinq fois supérieures à celles obtenues lorsque cette valeur n'était pas activée.

    Comparaison de NFS nconnect à l&#39;aide d&#39;une seule machine virtuelle Red Hat 9 avec une taille de bloc de 8 Kio.

    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-32 unique exécutant un système d'exploitation Windows 2022

    • Ensemble 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 numjobs de 8. Le paramètre iodepth a été augmenté de cinq à chaque exécution jusqu'à ce que le débit maximal soit atteint.

    Comparaison SMB RSS d&#39;une seule VM Windows 2022 avec une taille de bloc de 8 Kio

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/fstab ou commande de montage :

    • actimeo=600: augmente le temps pendant lequel les attributs sont mis en cache sur le client, ce qui réduit les appels GETATTR.
    • 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/netapp
    
  • Paramètres keepalive TCP : ajustez le keepalive TCP du système pour détecter plus rapidement les connexions qui ne répondent pas. Vous pouvez définir ce paramètre à l'aide de sysctl :

    sudo sysctl -w net.ipv4.tcp_keepalive_time=60
    

    Pour que cette modification soit conservée après les redémarrages, ajoutez net.ipv4.tcp_keepalive_time = 60 à /etc/sysctl.conf et rechargez avec sudo 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,nfsv4
    • nfsv3,smb
    • nfsv4,smb

    Selon le type de protocole que vous choisissez, nous vous recommandons d'ajouter les paramètres spécifiques au protocole, tels que export-policy ou smb-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.