À mon avis, aucune des réponses ci-dessus n'est satisfaisante.
Je pense que l'article auquel je fais référence sur le lien suivant est bien ciblé pour répondre à cette question:
http://perfdynamics.blogspot.ch/2014/01/monitoring-cpu-utilization-under-hyper.html
CITATION:
L'idée derrière HT est de permettre à un thread d'application différent de s'exécuter lorsque l'application en cours se bloque; en raison d'une mauvaise prédiction de branche, de bulles dans le pipeline, etc. Pour rendre cela possible, il doit y avoir un autre port ou registre AS. Ce registre devient visible pour le système d'exploitation lorsque HT est activé. Cependant, le système d'exploitation (et tout au long de la chaîne alimentaire jusqu'aux outils de perf que vous utilisez) pense maintenant deux fois la capacité du processeur est disponible, c'est-à-dire 100% CPU sur chaque port AS.
Mais sous le capot, il n'y a toujours qu'une seule unité d'exécution: le noyau physique unique avec lequel vous avez commencé avant l'activation de HT. La différence est qu'il est partagé d'une manière ou d'une autre entre les 2 ports AS. La façon dont le cœur unique est commuté entre les deux ports est très compliquée, mais est plus facilement comprise en termes de files d'attente interrogées. J'entre dans ce niveau de détail dans mes cours GCaP.
Les meilleures mesures de test que j'ai, indiquent que chaque port HT ne peut pas être occupé à plus de 75%, en moyenne, ou 150% de la capacité totale attendue de 200% selon le système d'exploitation. La capacité "manquante" de 50%, dont j'ai parlé plus haut, est une illusion. Intel a affirmé que quelque chose dans la plage de 120% à 130% peut être attendu pour les applications générales.
En fait, je suis presque sûr que le système d'exploitation peut atteindre 100% sur chaque cœur virtuel, cela ne fait aucun doute. Je viens de faire un:
mvn clean install -DskipTests -T 5
Et je peux vous assurer que mes 8 cœurs virtuels et 4 cœurs physiques ont tous été utilisés à 100% par le processeur. Et je n'ai certainement pas 8 cœurs sur ma machine.
En bref, vous pouvez supposer ce qui suit si la charge totale du processeur dépasse 100%, vous êtes au maximum, et très probablement avec précision, en utilisant exactement 100% du cœur physique. Cela dit, si vous avez CORE 1 physique divisé en CPU 1 et CPU 2 du système d'exploitation. Et sur CPU 1 vous avez une utilisation totale de 50% et sur CPU 2 vous avez une utilisation totale de 50%, très probablement dans la vraie vie mettre une pression d'une utilisation totale de 100% sur ce CPU. Vous l'avez atteint au maximum.
Mais bien sûr, le système d'exploitation dans ses outils de surveillance du système n'a aucune idée qu'il vous vend une illusion. Du point de vue du système d'exploitation et de la façon dont il gère les ressources, il pensera simplement que chacun de ces deux cœurs virtuels est toujours inactif à 50%, donc s'il y a plus de tâches à exécuter, il essaiera de les répartir uniformément sur ces deux cœurs . Ainsi, lorsque vous dépassez 100% d'utilisation du processeur, pendant une période d'utilisation du processeur, il y a toujours un travail en file d'attente à exécuter pendant cette période de temps qui n'a jamais eu de changement pour obtenir une tranche horaire sur le processeur. Finalement, il l'obtiendra, mais il y a toujours des threads qui ne fonctionnent même pas, même s'ils sont programmés pour s'exécuter.
Merci