Avant de continuer, veuillez lire Pourquoi la machine virtuelle Windows 10 affiche-t-elle toujours une utilisation du processeur à 100 % sur QEMU-KVM ? Le même problème concerne la machine virtuelle Windows10 sur OpenStack, ce qui la ralentit et utilise toujours 100 % d'utilisation du processeur. Cet article explique comment configurer OpenStack pour exécuter la machine virtuelle Windows10 sur un processeur multicœur utilisant tous les cœurs par CPU.
Informations de configuration
Version KVM : 2.12.0
OS invité : Windows10 Accueil
CPU HÔTE : Processeur AMD Opteron(TM) 6128 avec
- Modèle de processeur :x86_64
- CPU :16
- Fréquence du processeur :2 000 MHz
- Prise(s) CPU :1
- Cœur(s) par socket :4
- Thread(s) par cœur :1
- Cellule(s) NUMA :4
- Taille de la mémoire :65771872 Kio
Comment configurer OpenStack pour exécuter la machine virtuelle Windows10 sur un processeur multicœur
Les processeurs de serveur modernes comme ci-dessus utilisent l'architecture NUMA (Non-Uniform Memory Access). L'image ci-dessous montre la comparaison entre UMA et NUMA. L'architecture NUMA fournit une mémoire séparée pour chaque processeur (contrairement à UMA, où tous les processeurs accèdent à la mémoire partagée via un bus). En même temps, un processeur peut accéder à la mémoire qui appartient à d'autres processeurs en utilisant un bus partagé. Un processeur a l'avantage en termes de performances d'accéder à sa propre mémoire locale plus rapidement qu'une autre mémoire sur un multiprocesseur.
Courtoisie PIC :www.nakivo.com
Lors de l'exécution de machines virtuelles sur des hôtes NUMA, comme illustré dans l'image ci-dessous, il est important que les vCPU exécutant des processus se trouvent sur le même nœud NUMA que la mémoire utilisée par ces processus. Cela garantit que tous les accès à la mémoire sont locaux au nœud et ne consomment donc pas la bande passante limitée de la mémoire inter-nœuds, ce qui ajoute de la latence aux accès à la mémoire.
La configuration d'OpenStack de la topologie NUMA et des fonctionnalités d'épinglage de CPU offre un contrôle de haut niveau sur la façon dont les instances s'exécutent sur les CPU de l'hyperviseur et la topologie des CPU virtuelles disponibles pour les instances.
Comment configurer les versions avec le placement et la topologie des nœuds NUMA
Avec la configuration ci-dessous, le pilote libvirt pourra effectuer un placement intelligent CPU/CORES pour les invités. Cela augmentera l'utilisation efficace des ressources informatiques et réduira la latence en évitant les accès à la mémoire entre les nœuds par les invités. Pour prendre en charge la spécification de la topologie, vous devez ajouter des spécifications supplémentaires à la saveur. Openstack permet de définir la topologie CPU des processeurs de la machine virtuelle à l'aide de propriétés.
$ openstack flavor set FLAVOR-NAME \ --property hw:cpu_sockets=FLAVOR-SOCKETS \ --property hw:cpu_cores=FLAVOR-CORES \ --property hw:cpu_threads=FLAVOR-THREADS \
Où :
- FLAVOUR-SOCKETS : (entier) Le nombre de sockets pour la VM invitée. Par défaut, ceci est défini sur le nombre de vCPU demandés.
- FLAVOR-CORES :(entier) Le nombre de cœurs par socket pour la VM invitée. Par défaut, il est défini sur 1.
- FLAVOR-THREADS :(entier) Le nombre de threads par cœur pour la VM invitée. Par défaut, il est défini sur 1.
Ne configurez jamais un nombre de cœurs virtuels supérieur sur chaque machine virtuelle au nombre de cœurs réels disponibles sur l'ordinateur hôte.
Pour ma topologie, voici le jeu de saveurs :
$ openstack flavor set Windows10 \ --property hw:cpu_sockets=1 \ --property hw:cpu_cores=4 \ --property hw:cpu_threads=1 \