Comment interpréter Task Manager dans un environnement virtualisé?

Je me request comment le Gestionnaire des tâches calcule l'utilisation du processeur dans un environnement virtualisé. Je peux penser à deux façons:

  1. Compter le nombre de cycles utilisés et split par le nombre de cycles disponibles, OU

  2. Comptez le nombre de cycles utilisés et divisez le nombre de cycles qui auraient dû être disponibles pendant la durée écasting.

Dans un environnement non virtualisé, ceux-ci conduiraient à la même réponse, mais dans un environnement virtuel fortement utilisé, je pouvais voir comment ils seraient différents. (Et j'ai un soupçon de soupçonner que le Gestionnaire des tâches utilise la deuxième méthode, ce qui signifie que je n'obtiens pas une image fidèle de l'utilisation de mon processeur).

Ni en réalité. Le gestionnaire de tâches request au kernel ces statistics. Le kernel calcule le time d'inactivité en mesurant le time entre le moment où la CPU tourne au ralenti et le travail à refaire. L'utilisation du processeur est de 100% less le pourcentage d'inactivité.

Dans une machine virtuelle, un certain time CPU disparaît alors que le processeur virtuel n'est pas programmé pour une raison ou une autre. (Peut-être qu'il a provoqué une "sortie VM" en touchant le matériel imité, peut-être y avait-il une autre machine virtuelle qui avait besoin d'un time CPU, etc.) Lorsque le time disparaît comme ça, il ne ressemble pas à un time d'inactivité pour la VM, il ressemble à un time occupé .

Ainsi, en résumé, le Gestionnaire de tâches aura tendance à indiquer la quantité de time CPU utilisée par la machine virtuelle par rapport à la durée totale du time que l'hyperviseur a accordé à la machine virtuelle. C'est plus ou less, mais pas tout à fait, # 1 dans votre question.