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 quee2-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 :
- Toutes les autorisations requises pour créer une VM.
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 sur1
.
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 sur1
.
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
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ésYAML_FILE_PATH
: chemin d'accès et nom du fichier .yaml dans lequel enregistrer les données de configuration exportéesZONE
: zone contenant la VM
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
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 à jourFILE_PATH
: chemin d'accès au fichier de configuration de la VM mis à jourZONE
: 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 projetZONE
: zone contenant la VMVM_NAME
: nom de la VM à partir de laquelle exporter les propriétésTHREADS_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 :
Exécutez la commande
lscpu
.lscpu
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 :
Ouvrez l'interface de ligne de commande de Windows Management Instrumentation (WMI).
wmic
Affichez le nombre de cœurs et le nombre de processeurs logiques en exécutant la commande suivante :
CPU Get NumberOfCores,NumberofLogicalProcessors
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