VMware – Host Power Management

Host Power Management

Ce topic est probablement un des plus gros sujet de débat du monde de la virtualisation, voila pourquoi je pense qu’il est utile de reprendre les bases pour y voir plus clair.

La plupart du temps on voit des configuration en statique à base de « High » ou « Maximum » Performance qui parait au premier abord être une bonne solution (et globalement ça l’est) mais c’est plus compliqué que ça dans la réalité et on va voir pourquoi, un indice « Turbo Boost ».

Turbo Boost Technology est une fonctionnalité des processeurs Intel qui permet de booster la fréquence de base du CPU avec un mécanisme de contrôle dynamique basé sur :

  • Le type de workload
  • Le nombre de cores actifs
  • L’estimation de la consommation électrique (vCore)
  • La température

Power Management Control

Le contrôle se fait à deux niveaux, via le BIOS de la machine physique et/ou via l’ESXi. Il est commun de voir le BIOS configuré en mode Dynamic ou Balanced, provoquant souvent des plaintes auprès des vendeur de matériel car le matériel (notamment dans le cas d’un ESXi) n’est pas capable de comprendre les besoins des VMs aussi bien que le ferait l’hyperviseur lui même. Voila pourquoi vous retrouverez souvent un passage de tous les paramètres en mode High/Performance ce qui soyons honnête est bourrin fonctionne très bien mais n’est pas forcément ce qu’il y a de plus flexible.

L’architecture des CPU actuels nous permet d’affiner la gestion de l’énergie, non pas pour seulement consommer moins avec vSphere Host power Management (même si on se préoccupe de l’écologie) mais surtout pour adapter la performance au workload et dans certains cas améliorer les performances notamment via Turbo Boost.

Power Management Technology

Voila pourquoi des fonctionnalités comme Dynamic Voltage and Frequency Scaling (DVFS) sont apparues pour calmer G.T consommer moins en réduisant la tension. Cette tension ou Vcore (Voltage Core), est la tension principale qui est fournie au CPU à partir de sa carte mère

Parfait, on active Enhanced Intel SpeedStep (EIST), il réduit le Vcore, on chauffe moins, on consomme moins, on sauve la planète et on à les même performance… oui et non (ça c’est de la conclusion).

Dans le monde de l’overclocking notamment, on sait que le Vcore est primordial pour atteindre de hautes fréquences tout en gardant une certaines stabilité, hors en diminuant ce Vcore il faudra à un moment ou un autre diminuer la fréquence et donc les performances par la même occasion.

Les fondeurs ne se sont pas arrêté la est on introduit Fully Integrated Voltage Regulators (FIVR) qui permet une gestion plus fine de la consommation par core, on s’approcherait pas de quelque chose de plus utile pour la virtualisation ou chaque VM utilise une fraction du CPU ?

C’est la qu’entre en scène deux concepts qui ne vous sont sûrement pas inconnus, j’ai nommé P-States et C-States. En gros un P-State est un état d’économie d’énergie (execute) basé sur une fréquence et une tension. Un C-State est un état d’économie d’énergie (idle) qui permet de désactiver un core, il est donc plus radical.

P-States

Un P-State est un état d’économie d’énergie de l’ACPI (Advanced Configuration and Power Interface) basé sur une fréquence et une tension.

©Intel

Chaque CPU à un nombre donné de P-State spécifique, vous en trouverez globalement 10

/12 désigné par un P et un nombre (ex. P0, P1, P10…). Si vous désactivez le Turbo Boost vous verrez qu’un P-State aura disparu, c’est normal car le système lui assigne le P0 avec 1MHz de plus par défaut.

P-STATE Tension (V) Fréquence (MHz)
P0 1.25 3100
P1 0.9 2600
P5 0.85 2000
P10 0.76 800

Avec l’introduction de FIVR, un core a la possibilité d’utiliser un P-State différent de son voisin, ainsi un core peut tourner à 3.1 Ghz pendant qu’un autre tourne à 2 Ghz. Dans le cas d’un CPU sans FIVR, les cores partagent la même tension et fréquence et c’est donc la valeur la plus haute qui sera retenu (ex. 3.1 Ghz même si un core n’a que besoin d’être à 2Ghz).

L’OS va ainsi proposer un P-State à utiliser via un « vote » mais dans tout les cas c’est le CPU qui aura le dernier mot avec le choix final.

Si vSphere Power Management est activé, le VMkernel commencera à voter pour un P-States une fois arrivé sous le seuil d’utilisation du pCPU basé sur la Policy.

Power Management Policy Seuil d’activation des P-States
High Performance Désactivé
Balanced 60%
Low Power 90%

La transition entre les P-States se fait de manière douce, même si le vote passe de P0 à P10 le système fera un incrément P0, P1,P2…P10.

C-States

La ou les P-States vont gérer l’économie énergie en diminuant la performance (les cores sont toujours actifs), les C-States vont être plus radicaux en coupant carrément un ou plusieurs cores. Le State C0 est un état dans lequel le core exécute des instructions, c’est à dire qu’un P-State est possible. Si toutes les instruction sont complétées, l’OS met au ralenti (idle) le CPU via un Halt (HLT).

Pour approfondir le terme Idle (quand le CPU n’est pas utilisé à 100%) il faut se dire qu’a ce moment le CPU n’exécute des instruction qu’à temps partiel et donc qu’il est Idle le reste du temps. L’OS va donc couper souvent des cores via HLT et les réactiver rapidement suivant le % d’utilisation CPU.

©metebalci

Le State C1 est l’état HLT de désactivation soft, il y a aussi les States C3 et C6 qui sont plus radicaux en désactivant d’autres parties du core, flushant le cache…

En construction… Stay Tuned !

Mathieu

Je suis actuellement ingénieur spécialisé dans le design d'environnements cloud virtualisés. Adepte des technologies de VMware, Nutanix, Citrix et Microsoft je propose à travers ce blog diverses astuces de troubleshooting.

S’abonner
Notification pour
guest

0 Commentaires
Commentaires en ligne
Afficher tous les commentaires