Warum meldet top die falsche CPU-Auslastung?

10

Ich habe eine Maschine mit Intel(R) Xeon(R) CPU E5520als 16 logischen Kernen sichtbar (8 mit HT). Wenn ich etwas zum Essen der CPU-Zeit (Single Threaded) laufen lasse, meldet top korrekt 100% CPU-Auslastung für den Prozess, aber nur etwa 3-4% Gesamtauslastung.

Cpu(s):  3.6%us,  0.0%sy,  0.0%ni, 96.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.1%st

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1567 www       20   0 65632   84    4 R  100  0.0   0:05.96 burnMMX

Sicherlich sollte der gemeldete Verbrauch ~ 6,25% betragen (1 von 16 Kernen).

  • Ist es falsch, weil es eine virtuelle Maschine ist?
  • Wie kann ich einen korrekten Wert berechnen?

quelle
1
Sie können versuchen atop, die Spitze zu ändern, um die Auslastung jeder CPU einzeln zu melden (durch Drücken von 1)
Hubert Kario
@HubertKario Die für jeden Kern gemeldete Verwendung ist korrekt. Warum ist dann die Summe falsch?
Wenn die Nutzungsniveaus der einzelnen Kerne korrekt sind, würde dies darauf hindeuten, dass ein Fehler oben so unwahrscheinlich ist, wie es sich anhört ...
Hubert Kario
Dies wäre nicht der erste Beitrag über falsche Top-Ergebnisse in VMs. Können Sie Ihre VM-Technologie sowie Ihre Host- und Gastbetriebssysteme beschreiben?
Nils
@Nils Xen mit einem Ubuntu / 2.6.32-21-Server-Gast. Keine Informationen zum Host-Betriebssystem.

Antworten:

12

topIn der Zusammenfassung wird die Auslastung in Bezug auf die CPU mit allen Kernen addiert. Wenn Sie sich dagegen die Liste der Prozesse ansehen, werden in Top-Berichten Prozent auf einen Kern (real oder HT) bezogen. Versuchen Sie, einen Prozess mit 4 Threads auszuführen, der 4 CPU-Kerne verbrauchen kann. Sie finden ihn mit 400% CPU.

Ich kann nicht sagen warum, aber so topfunktioniert es auf allen Linux-Systemen, die ich gesehen habe.

Patkos Csaba
quelle
5

Funktioniert meistens topstandardmäßig im Irix-Modus, so wie Sie es beschreiben. Wenn Sie einen Prozentsatz der gesamten CPU-Funktionen erhalten möchten (dh wenn sich die Summe der möglichen CPU-Auslastung zu 100% und nicht zu cpu_cores_number * 100% summiert), schalten Sie einfach den 'Irix'-Modus durch Drücken von um I.

moon.musick
quelle