Configurer le multithreading simultané


Dans la mesure du possible, Compute Engine active le multithread (SMT) simultané par défaut. Avec le mode SMT activé, un seul cœur de processeur physique peut exécuter deux processeurs virtuels, chacun en tant que threads distincts. Vous pouvez désactiver le SMT en réduisant le nombre de threads (le nombre de processeurs virtuels effectifs) par cœur au nombre de 1. Ce document explique pourquoi et comment modifier le nombre de threads s'exécutant sur chaque cœur de processeur physique.

Éléments à prendre en compte pour configurer SMT

Performances
La réduction du nombre de threads s'exécutant sur chaque cœur de processeur physique peut améliorer les performances des charges de travail qui sont hautement parallèles ou effectuent des calculs à virgule flottante.
Sécurité
Si une VM exécute du code non approuvé, la réduction du nombre de threads par cœur peut atténuer les failles du processeur telles que l'échantillonnage des données microarchitecturales.
Licences
Certains contrats de licence comportent des exigences liées au nombre de processeurs virtuels que vous consommez. La désactivation de SMT réduit le nombre de processeurs virtuels pour chaque cœur de 2 à 1, ce qui peut réduire vos coûts de licence. Pour plus d'informations, consultez votre contrat de licence.

Limites

Le nombre de threads par cœur n'est pas configurable sur les éléments suivants :

  • VM qui s'exécutent sur des types de machines comportant moins de deux processeurs virtuels, par exemple n1-standard-1, ou des machines à cœur partagé telles que e2-small.

  • VM s'exécutant sur le type de machine TauD T2D.

Tarifs

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. Par exemple, le type de machine n2-standard-8 peut exécuter jusqu'à huit processeurs virtuels, soit deux processeurs virtuels pour chacun des quatre cœurs du processeur physique. Si vous décidez d'exécuter un seul thread par cœur (soit quatre processeurs virtuels), vous êtes toujours facturé pour huit processeurs virtuels. Pour en savoir plus sur le mode de facturation des VM, consultez la page Tarifs des instances de VM.

Configurer SMT sur une nouvelle VM

Configurez SMT sur une nouvelle VM en suivant la procédure ci-dessous.

Autorisations requises pour cette tâche

Pour effectuer cette tâche, vous devez disposer des autorisations suivantes :

gcloud

Configurez SMT lors de la création d'une VM à l'aide de la commande gcloud beta compute instances create suivante :

gcloud beta compute instances create VM_NAME \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --threads-per-core=THREADS_PER_CORE

Remplacez l'élément suivant :

  • VM_NAME : nom de la nouvelle VM.

  • ZONE : zone de la nouvelle VM.

  • MACHINE_TYPE : type de machine pour la nouvelle VM. Doit être un type de machine avec deux processeurs virtuels ou plus.

  • THREADS_PER_CORE : nombre de threads par cœur physique. Les processeurs actuels acceptent deux threads par cœur pour SMT, qui est activé par défaut. Pour désactiver SMT, définissez la valeur sur 1.

API

Configurez SMT lors de la création d'une VM à l'aide de la méthode instances.insert avec le champ threadsPerCore.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances

{
  ...
  "advancedMachineFeatures": {
    ...
    "threadsPerCore": "THREADS_PER_CORE"
  },
  ...
}

Remplacez l'élément suivant :

  • PROJECT_ID : ID du projet.

  • ZONE : zone de la nouvelle VM.

  • THREADS_PER_CORE : nombre de threads par cœur physique. Les processeurs actuels acceptent deux threads par cœur pour SMT, qui est activé par défaut. Pour désactiver SMT, définissez la valeur sur 1.

Configurer SMT sur une VM existante

Configurez SMT sur une VM existante en suivant la procédure ci-dessous.

Autorisations requises pour cette tâche

Pour effectuer cette tâche, vous devez disposer des autorisations suivantes :

  • compute.instances.get sur le projet
  • compute.instances.update sur le projet

gcloud

  1. Exportez les propriétés de la VM à l'aide de la commande gcloud beta compute instances export suivante :

    gcloud beta compute instances export VM_NAME \
        --destination=YAML_FILE_PATH \
        --zone=ZONE
    

    Remplacez l'élément suivant :

    • VM_NAME : nom de la VM à partir de laquelle exporter les propriétés

    • YAML_FILE_PATH : chemin d'accès et nom du fichier .yaml dans lequel enregistrer les données de configuration exportées

    • ZONE : zone contenant la VM

  2. Dans le fichier de configuration de la VM enregistré dans FILE_PATH, mettez à jour la valeur de threadsPerCore. Si la valeur ne figure dans le fichier, ajoutez l'élément suivant :

    advancedMachineFeatures:
      threadsPerCore: THREADS_PER_CORE
    
  3. Mettez à jour la VM avec le nouveau nombre de threads par cœur à l'aide de la commande gcloud beta compute instances update-from-file suivante :

    gcloud beta compute instances update-from-file VM_NAME \
        --source=FILE_PATH \
        --most-disruptive-allowed-action=RESTART \
        --zone=ZONE
    

    Remplacez l'élément suivant :

    • VM_NAME : nom de la VM à mettre à jour

    • FILE_PATH : chemin d'accès au fichier de configuration de la VM mis à jour

    • ZONE : zone contenant la VM à mettre à jour

API

Mettez à jour les threads par cœur de la VM à l'aide de la méthode instances.update suivante :

PUT https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?most_disruptive_allowed_action=RESTART

{
  ...
  "advanced_machine_features": {
    ...
    "threadsPerCore": "THREADS_PER_CORE"
  },
  ...
}

Remplacez l'élément suivant :

  • PROJECT_ID : ID du projet

  • ZONE : zone contenant la VM

  • VM_NAME : nom de la VM à partir de laquelle exporter les propriétés

  • THREADS_PER_CORE : nombre de threads par cœur

Vérifier la configuration de SMT

Vérifiez la configuration de SMT à l'aide de la procédure correspondant au système d'exploitation en cours d'exécution sur la VM.

Linux

Vérifiez la configuration de SMT sur les VM Linux en procédant comme suit :

  1. Connectez-vous à la VM Linux.

  2. Exécutez la commande lscpu.

    lscpu
    
  3. Dans le résultat, vérifiez la valeur du nombre de threads par cœur.

    Dans l'exemple de résultat suivant, la valeur du nombre de threads par cœur est 1.

    ...
    CPU(s):              1
    On-line CPU(s) list: 0
    Thread(s) per core:  1
    Core(s) per socket:  1
    Socket(s):           1
    NUMA node(s):        1
    Vendor ID:           GenuineIntel
    CPU family:          6
    Model:               85
    Model name:          Intel(R) Xeon(R) CPU
    ...
    

Windows

Vérifiez la configuration de SMT sur les VM Windows en procédant comme suit :

  1. Connectez-vous à la VM Windows.

  2. Ouvrez l'interface de ligne de commande de Windows Management Instrumentation (WMI).

    wmic
    
  3. Affichez le nombre de cœurs et le nombre de processeurs logiques en exécutant la commande suivante :

    CPU Get NumberOfCores,NumberofLogicalProcessors
    
  4. Dans le résultat, vérifiez la valeur du nombre de threads par cœur.

    Dans l'exemple de résultat suivant, la valeur du nombre de threads par cœur est 1.

    NumberOfCores  NumberOfLogicalProcessors
    1              1
    

Étape suivante