GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi la machine virtuelle Windows10 est-elle lente sur OpenStack ?

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 numéro supérieur. de cœurs sur chaque machine virtuelle

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 \


Linux
  1. Pourquoi Scp est-il si lent et comment le rendre plus rapide ?

  2. Interroger la liste des serveurs pour la mémoire/processeur alloué ?

  3. Trouver les 10 principaux processus en cours d'exécution par utilisation de la mémoire et du processeur

  4. Pourquoi l'impression sur stdout est-elle si lente ? Peut-il être accéléré ?

  5. Pourquoi mmap() est plus rapide que les E/S séquentielles ?

Comment augmenter la mémoire et le processeur sur une machine vagabonde

Surveillance efficace de la bande passante du réseau, du processeur et de la mémoire

Limite de mémoire et limite de processeur dans le conteneur Docker

Ralentissez un seul processus pour réguler la température du processeur

Pourquoi MemTotal dans /proc/meminfo change-t-il ?

Pourquoi ma rsync est-elle si lente ?