J’ai un serveur qui exécute Windows 2008 64 bits Hyper-V, avec 8 Go de RAM et un Intel Xeon X3440 @ 2,53 GHz, ce qui me donne 8 cœurs logiques dans le moniteur de performances sur le système hôte.
J’ai configuré trois machines virtuelles, toutes sous Windows 2008 32 bits.
Serveur de build, exécutant Team City
Serveur de staging
Serveur SQL, exécutant SQL Server 2005
J’ai quelques problèmes avec la configuration en ce que le moniteur hôte reste réactif en permanence, même si les VM travaillent apparemment à 100% du CPU et sont très lentes et non réactives. (J’ai posé une question séparée à ce sujet.)
Ma question est donc : quelle est la meilleure façon de surveiller comment les CPU physiques sont réellement utilisés ? La raison pour laquelle je pose la question est qu’on me dit que je ne peux pas me fier au gestionnaire des tâches pour surveiller l’utilisation du CPU dans une VM.
Premièrement, vous devez vous rappeler que dans Hyper-V, l’« hôte » est appelé une partition parente et c’est vraiment comme un invité virtualisé avec des permissions et des rôles spéciaux. Tout comme n’importe quel autre enfant/invité, lorsque vous ouvrez le Gestionnaire des tâches, vous ne pouvez pas voir l’utilisation CPU des autres enfants sur le serveur.
Pour résumer son article, vous devez vérifier trois choses pour obtenir une image précise de l’utilisation du CPU :
Voir l’utilisation CPU sur chaque invité - ceci est disponible via Hyper-V Manager ou le Moniteur de performances.
L’utilisation CPU due aux changements de contexte - c’est le compteur perfmon appelé % Hypervisor Run Time sous Hyper-V Hypervisor Virtual Processor
Le processus worker de la partition enfant - vmwp.exe s’exécutant sur la partition parente (1 par enfant). Celui-ci gère les opérations Hyper-V comme la sauvegarde d’état.