Meiner Meinung nach ist keine der oben genannten Antworten zufriedenstellend.
Ich denke, der Artikel, auf den ich mich unter folgendem Link beziehe, ist gut darauf ausgerichtet, diese Frage zu beantworten:
http://perfdynamics.blogspot.ch/2014/01/monitoring-cpu-utilization-under-hyper.html
ZITAT:
Die Idee hinter HT ist, die Ausführung eines anderen Anwendungsthreads zuzulassen, wenn die aktuell ausgeführte App blockiert. Aufgrund von Fehlvorhersagen für Zweige, Blasen in der Pipeline usw. Um dies zu ermöglichen, muss ein anderer Port oder ein anderes AS-Register vorhanden sein. Dieses Register wird für das Betriebssystem sichtbar, wenn HT aktiviert ist. Das Betriebssystem (und die gesamte Nahrungskette bis zu den von Ihnen verwendeten Perf-Tools) glaubt jedoch, dass die doppelte Prozessorkapazität verfügbar ist, dh 100% CPU an jedem AS-Port.
Unter der Haube gibt es jedoch immer noch nur eine Ausführungseinheit: den einzelnen physischen Kern, mit dem Sie begonnen haben, bevor HT aktiviert wurde. Der Unterschied besteht darin, dass es auf irgendeine Weise zwischen den 2 AS-Ports geteilt wird. Wie der einzelne Kern zwischen den beiden Ports umgeschaltet wird, ist sehr kompliziert, lässt sich jedoch am einfachsten anhand der abgefragten Warteschlangen verstehen. Ich gehe in meinen GCaP-Klassen auf diesen Detaillierungsgrad ein.
Die besten Testmessungen, die ich habe, zeigen, dass jeder HT-Port im Durchschnitt nicht mehr als 75% ausgelastet sein kann oder 150% der erwarteten Gesamtkapazität von 200% je nach Betriebssystem. Die "fehlende" Kapazität von 50%, auf die ich bereits hingewiesen habe, ist eine Illusion. Intel hat behauptet, dass für allgemeine Anwendungen etwas im Bereich von 120% bis 130% zu erwarten ist.
Tatsächlich bin ich mir ziemlich sicher, dass das Betriebssystem auf jedem virtuellen Kern 100% erreichen kann, daran besteht kein Zweifel. Ich habe gerade ein:
mvn clean install -DskipTests -T 5
Und ich kann Ihnen versichern, dass meine 8 virtuellen Kerne und 4 physischen Kerne zu 100% CPU-Auslastungen waren. Und ich habe definitiv keine 8 Kerne auf meiner Maschine.
Kurz gesagt, Sie können Folgendes annehmen, wenn die Gesamt-CPU-Auslastung über 100% liegt, höchstens und höchstwahrscheinlich ziemlich genau, wenn Sie genau 100% des physischen Kerns verwenden. Das heißt, wenn Sie physischen CORE 1 in Betriebssystem CPU 1 und CPU 2 aufgeteilt haben. Und auf CPU 1 haben Sie eine Gesamtauslastung von 50% und auf CPU 2 haben Sie eine Gesamtauslastung von 50%, höchstwahrscheinlich im wirklichen Leben Druck auf eine Gesamtauslastung von 100% auf diese CPU ausüben. Sie haben es ausgereizt.
Aber natürlich hat das Betriebssystem in seinen Systemüberwachungstools keine Ahnung, dass es Ihnen eine Illusion verkauft. Unter dem Gesichtspunkt des Betriebssystems und der Art und Weise, wie es Ressourcen verwaltet, wird es nur glauben, dass jeder dieser beiden virtuellen Kerne immer noch zu 50 Prozent inaktiv ist. Wenn also mehr Aufgaben ausgeführt werden müssen, wird versucht, sie gleichmäßig auf diese beiden Kerne zu verteilen . Wenn Sie also über 100% der CPU-Auslastung hinausgehen, müssen während eines Zeitraums der CPU-Auslastung immer Arbeiten in der Warteschlange ausgeführt werden, die sich nie geändert haben, um einen Zeitsclice für die CPU zu erhalten. Irgendwann wird es klappen, aber es gibt immer einige Threads, die tatsächlich nicht einmal ausgeführt werden, obwohl sie ausgeführt werden sollen.
Vielen Dank