Warum zeigt der Befehl "top" eine CPU-Auslastung von 799% an?

47

Ich führe einen Prozess auf einem 4-Kern-Ubuntu-Server aus. Der topBefehl zeigt jedoch, dass die CPU-Auslastung ständig 799% beträgt.

Wie kann das möglich sein? Ich weiß, dass für Multi-Core-CPUs eine CPU-Auslastung von mehr als 100% erwartet wird, aber 799% sind ein wirklich hoher Wert.

Kann mir jemand erklären, warum und wann dies passieren könnte?

Bearbeiten:

Laut Vorschlag von Gregory MOUSSAT habe ich mit htop folgendes bekommen:

Bildbeschreibung hier eingeben

Arpssss
quelle
1
Haben die 4 Kerne jeweils 2 Threads (zB Intel Core i7)?
Renan
@ Renan, ich starte es auf einem Thread.
Arpssss
OK dann. Weil ich gesehen habe, dass dies auf einigen i7-Systemen passiert.
Renan
1
Aber ist die JVM Single-Threaded?
Ignacio Vazquez-Abrams
6
Das sieht wirklich wie ein voll geladenes i7 aus, das bekomme ich normalerweise, wenn ich ein Video
codiere

Antworten:

65

Die von verwendete Skala topist 100%, wenn ein Kern voll ausgelastet ist. Oder wenn ein Kern 20% und ein zweiter 80% beträgt. Dies führt auf Multicore-Computern zu merkwürdigen Ergebnissen, da es leicht 100% überschreiten kann.
Wenn Sie 8 Kerne haben, topkönnen Sie von 0% (Leerlaufsystem) bis 800% (volle Leistung) anzeigen.

Ihr Programm verwendet nur Ihre 4 Kerne mit Hyperthreading (also 8 virtuelle Kerne) mit maximaler Kapazität. Top ergibt also fast 8 x 100% = 800%.

Sie können der JVM nicht explizit anweisen, einen einzelnen Thread zu verwenden. Sie verwendet mehrere Threads, um ihre Arbeit zu erledigen, selbst wenn Sie in Ihrer Anwendung nur einen einzigen Thread verwenden.

Sie können das htopDienstprogramm als bessere topAlternative verwenden. Sie sehen Ihr Programm mit allen 8 Kernen.

Gregory MOUSSAT
quelle
Sie können eine Reihe von Prozessen auf eine Reihe von Kernen beschränken oder den Prozentsatz der CPU begrenzen. Ich erinnere mich jedoch nicht an die Befehle. (eins ist cpulimit)
ctrl-alt-delor
+1 für htop, viel besser als atop oder top
CodeLikeBeaker
+1 für htop. Dies half mir, zwei CPU-hungrige Threads zu nageln!
Arun
3
Alle Hagelhtop
fragamemnon