Configurer le multithread simultané (SMT)


Cette page montre comment configurer le multithread simultané dans vos clusters Google Kubernetes Engine (GKE).

Aperçu

Les nœuds GKE sont des instances de machine virtuelle (VM) Compute Engine que GKE crée en votre nom. Sur ces VM, il est courant que le multithread simultané (simultaneous multi-threading ou SMT) soit activé par défaut. Le SMT est la capacité à exécuter plusieurs threads indépendants sur un même cœur de processeur physique. Lorsque le mode SMT est activé, un même cœur physique peut exécuter deux processeurs virtuels (vCPU) en tant que threads distincts et indépendants. Par exemple, un nœud GKE n2-standard-32 exécute en fait 32 processeurs virtuels sur 16 cœurs de processeur physiques.

Avec l'introduction de la possibilité de configurer le SMT sur les nœuds GKE, vous pouvez maintenant configurer le mode SMT de sorte que le nombre de vCPU effectifs soit égal au nombre de cœurs physiques, ce qui signifie que vos nœuds GKE peuvent utiliser l'intégralité du cœur physique par processeur virtuel.

Avantages

La configuration du SMT sur GKE offre les avantages suivants.

Performances améliorées

Certaines charges de travail de calcul hautes performances (HPC) peuvent voir une amélioration des performances en désactivant le SMT. En règle générale, pour de nombreuses tâches de calcul générales ou nécessitant de nombreuses E/S, le multithreading simultané peut augmenter considérablement le débit de l'application. En revanche, pour les tâches liées au calcul dans lesquelles les deux cœurs virtuels sont liés au calcul, le SMT peut nuire aux performances globales de l'application et ajouter une variance non déterministe aux tâches. Par conséquent, lorsque le mode SMT est désactivé, certaines applications HPC peuvent voir une amélioration de leurs performances, qui deviennent aussi plus prévisibles.

Réduction des coûts de licence

Certains contrats de licence logicielle comportent des modèles de facturation liés au nombre de processeurs virtuels utilisés. La désactivation du SMT réduit le nombre de processeurs virtuels pour chaque cœur de moitié, ce qui peut réduire vos coûts de licence. Pour plus d'informations, consultez votre contrat de licence.

Consultez la section Tarifs pour comprendre la manière dont Google Cloud facture lorsque le mode SMT est configuré.

Limites

  • Types de machines : le SMT n'est pas configurable sur les types de machines comportant moins de deux processeurs virtuels (par exemple : n1-standard-1) ou sur le type de machine TauD T2D.
  • Provisionnement automatique des nœuds : la configuration du SMT n'est pas disponible pour les clusters sur lesquels le provisionnement automatique des nœuds est activé.
  • Autoscaler de cluster : le scaling à partir de zéro nœud avec configuration du SMT n'est possible que sur l'autoscaler de cluster pour les clusters exécutant GKE en version 1.21 ou ultérieure.
  • GKE Sandbox : vous pouvez configurer les paramètres SMT sur les nœuds GKE Sandbox dans les clusters GKE Standard exécutant une version 1.24.2-gke.300 ou ultérieure avec l'option --threads-per-core ou, pour les versions précédentes, avec un DaemonSet autonome. Pour obtenir des instructions, consultez la section GKE Sandbox. Le multithreading étant désactivé par défaut dans GKE Sandbox avant la version 1.24.2-gke.300, la configuration du SMT avec threads-per-core n'est pas prise en charge. Si vous utilisez GKE Sandbox et que vous souhaitez activer le mode SMT, consultez la section Le mode SMT peut être désactivé.
  • Mode du cluster : la configuration du SMT n'est pas compatible avec les clusters GKE Autopilot.

Tarifs

Le SMT pour GKE est facturé en fonction des tarifs de Compute Engine pour le SMT sous-jacents. Le nombre de processeurs virtuels définis par le type de machine d'une VM vous est facturé, et non le nombre de threads qui s'exécutent sur chaque cœur. Même si vous configurez le mode SMT, vous continuerez d'être facturé pour le nombre de processeurs virtuels par défaut défini par le type de machine de la VM. Pour en savoir plus sur le mode de facturation des VM, consultez la page Tarifs des instances de VM.

Par exemple, un nœud GKE créé avec le type de machine n2-standard-8 s'exécute avec le mode SMT activé par défaut et peut exécuter jusqu'à huit processeurs virtuels, soit deux processeurs virtuels pour chacun des quatre cœurs de processeur physiques. Si vous configurez le mode SMT de manière à n'utiliser qu'un seul thread par cœur (soit quatre vCPU), vous êtes toujours facturé pour huit vCPU.

Configurer le SMT

Vous pouvez configurer le SMT sur les nouveaux clusters ou pools de nœuds en spécifiant le nombre de threads par cœur.

Le tableau suivant indique les valeurs possibles pour le nombre de threads par cœur et le comportement SMT correspondant du nœud :

Threads par cœur Comportement SMT
null (non spécifié) Valeur par défaut de la VM Compute Engine
0 Non valide
1 SMT désactivé
2 SMT activé
> 2 Non valide

Configurer le SMT sur un nouveau cluster

Vous pouvez configurer le SMT sur les nouveaux clusters à l'aide de gcloud CLI ou de la console Google Cloud.

gcloud

Pour configurer le SMT, exécutez la commande suivante :

gcloud container clusters create CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --threads-per-core=THREADS_PER_CORE

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du nouveau cluster.
  • MACHINE_TYPE : type de machine à utiliser pour vos nœuds GKE. Cette valeur doit correspondre à un type de machine avec deux processeurs virtuels ou plus.
  • THREADS_PER_CORE : nombre de threads par cœur physique. Le tableau précédent indique les valeurs que vous pouvez spécifier.

Pour obtenir la liste complète des options, consultez la documentation de gcloud container clusters create.

Console

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer.

  3. Dans la boîte de dialogue Créer un cluster, en regard de GKE Standard, cliquez sur Configurer.

  4. Dans la section Pools de nœuds du menu de navigation, cliquez sur le nom d'un pool de nœuds, puis sur Nœuds.

  5. Dans la section Configuration de la machine, sélectionnez un type de machine compatible, tel que e2-standard-2.

  6. Cliquez sur Plate-forme du processeur et GPU.

  7. Dans le menu déroulant Ratio vCPU/cœurs, sélectionnez l'une des options suivantes :

    • 1 vCPU par cœur : désactive le SMT.
    • 2 vCPU par cœur : conserver le SMT.
  8. Configurez le cluster et les pools de nœuds selon vos besoins, puis cliquez sur Créer.

Configurer le SMT sur un nouveau pool de nœuds

Vous pouvez configurer le SMT sur les nouveaux pools de nœuds à l'aide de gcloud CLI ou de la console Google Cloud.

gcloud

Pour configurer le SMT, exécutez la commande suivante :

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --threads-per-core=THREADS_PER_CORE

Remplacez les éléments suivants :

  • POOL_NAME : nom du nouveau pool de nœuds.
  • CLUSTER_NAME : nom du cluster existant.
  • MACHINE_TYPE : type de machine à utiliser pour vos nœuds GKE. Cette valeur doit correspondre à un type de machine avec deux processeurs virtuels ou plus.
  • THREADS_PER_CORE : nombre de threads par cœur physique. Le tableau précédent indique les valeurs que vous pouvez spécifier.

Pour obtenir la liste complète des options, consultez la documentation de gcloud container clusters create.

Console

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Cliquez sur le nom du cluster que vous souhaitez modifier.

  3. Cliquez sur Ajouter un pool de nœuds.

  4. Dans le menu de navigation, cliquez sur Nœuds.

  5. Dans la section Configuration de la machine, sélectionnez une Famille de machines et un Type de machine compatible avec le SMT, tel quen2-standard-2.

  6. Cliquez sur Plate-forme du processeur et GPU.

  7. Dans le menu déroulant Ratio vCPU/cœurs, sélectionnez l'une des options suivantes :

    • 1 vCPU par cœur : désactive le SMT.
    • 2 vCPU par cœur : conserver le SMT.
  8. Configurez le pool de nœuds selon vos besoins, puis cliquez sur Créer.

Vérifier la configuration du SMT

Linux

Pour vérifier la configuration du SMT sur des nœuds Linux, procédez comme suit :

  1. Connectez-vous en SSH sur le nœud :

    gcloud compute ssh NODE_NAME
    

    Remplacez NODE_NAME par le nom de votre nœud.

  2. Vérifiez le nombre de processeurs virtuels :

    cat /proc/cpuinfo | grep processor | wc -l
    

    Le résultat ressemble à ce qui suit :

    16
    

    Si vous définissez le nombre de threads par cœur sur 1, le résultat doit afficher la moitié du nombre de vCPU par défaut de la VM Compute Engine. Par exemple, la sortie pour n2-standard-32 quand le SMT est désactivé doit être de 16, au lieu de la valeur par défaut de 32.

Windows

Pour vérifier la configuration du SMT sur des nœuds Windows, procédez comme suit :

  1. Définissez un nom d'utilisateur et un mot de passe pour vous connecter en RDP sur le nœud :

    gcloud compute reset-windows-password NODE_NAME
    

    Remplacez NODE_NAME par le nom de votre nœud.

  2. Établissez une connexion à EXTERNAL_IP:3389 pour la VM.

  3. Exécutez la commande powershell suivante :

    Get-WmiObject -Class Win32_Processor -ComputerName. | Select-Object -Property [a-z]* | Select NumberOfCores,NumberOfLogicalProcessors
    

    Si vous définissez le nombre de threads par cœur sur 1, la valeur NumberOfCores doit être égale à la valeur NumberOfLogicalProcessors, comme dans l'exemple de résultat suivant :

    Output (example n1-standard-2 with SMT off)
    
    NumberOfCores NumberOfLogicalProcessors
    ------------- -------------------------
                1                         1
    

Étape suivante