Ich habe eine Maschine mit Intel(R) Xeon(R) CPU E5520
als 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?
atop
, die Spitze zu ändern, um die Auslastung jeder CPU einzeln zu melden (durch Drücken von1
)Antworten:
top
In 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
top
funktioniert es auf allen Linux-Systemen, die ich gesehen habe.quelle
Funktioniert meistens
top
standardmäß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 umI
.quelle