Verwirrt durch CPU-Werte im Unix-Befehl 'top'

11

Im folgenden Screenshot wird die Gesamt-CPU mit 3% angegeben, der mysqld-Prozess jedoch mit 57%. Sind dies 57% der gesamten 3% und somit nutzt mysqld nur etwa 1,5% der CPU?

oberer Screenshot http://img.skitch.com/20090620-cih33piwnnrke6aw41y9p1phwr.jpg

UPDATE : Ein Kommentator unten hat mich gebeten, die Taste '1' zu drücken und die Ergebnisse zu veröffentlichen: die Taste 1 http://img.skitch.com/20090620-gayja43s44qtw2wkw4aq642e8c.jpg

Teflon Ted
quelle

Antworten:

11

Die 57,6% bedeuten, dass mysqld .576 einer CPU verwendet. Die Diskrepanz ist wahrscheinlich eine Wettlaufbedingung zwischen der Datenerfassung für das gesamte System und der Erfassung der prozessbezogenen Daten.

BEARBEITEN: Basierend auf Ihrem Update sieht es so aus, als hätten Sie 16 Kerne.

57.5% => .575/16 = .036 = 3.6%.

Von dort kommen Ihre 3%.

Wenn Sie alle Leerlaufprozentsätze addieren und von 1600% abziehen, ergibt dies ebenfalls etwa 57,5%.

Brian-Brasilien
quelle
3

Können Sie versuchen, die Nummer 1 zu drücken, während oben läuft, und sehen, was passiert.

Bearbeiten:

Herr Unbekannt sagt es gut.

top sagt: "Wenn Sie einen CPU-Kern hätten, wäre er zu 57,5% ausgelastet."

Aber du hast 16 Kerne. Diese 57-Nummer ist also überall verteilt, wobei mysqld multithreaded ist und alles ...

Irgendwie verwirrend. Aber ich denke, das liegt daran, dass es für top schwieriger ist, Informationen für jeden Kern anzuzeigen ... Stellen Sie sich eine Top-Info-Zeile mit 16 oder mehr Kernen vor!

Auch wenn Sie die gesamte CPU-Zeit "% us" addieren

1.7+1.0+2.3+1.0+7.4+11.1+15.1+8.7 = 48.3
48.3/16 = 3.01875

Hier kommt die 3% Zahl her ...

Nicht jetzt
quelle
erledigt; siehe aktualisierte Frage.
Teflon Ted
1

Hat jemand empfohlen htop? Nicht, dass es bei dieser speziellen Frage mehr helfen würde als bei früheren Antworten, aber ich fühle mich verpflichtet zu erwähnen, htopwann immer ich jemanden sehe, der sie noch benutzt top!

user14018
quelle
0

Ich kann nicht sagen, ob Ihr Top mehrere CPUs zusammenführt, die Sie haben, aber das würde immer noch keinen Sinn ergeben.

Was möglicherweise passiert, ist, dass top nicht gleichzeitig die Werte für jeden Prozess und die gesamte CPU-Auslastung erhält. Es gibt eine kleine Zeitspanne, in der MySQL zwischen dem Lesen der Prozessinformationen und dem Lesen der globalen Informationen möglicherweise gestoppt oder mit viel CPU gestartet wurde. Es könnte durchaus nur eine einfache Rennbedingung sein.

Natürlich hätte dies lange genug passieren müssen, damit Sie es bemerkt haben. Ich vermute, dass dies nur ein seltsamer Fehler irgendwo oben oder in der Buchhaltung des Kernels sein könnte.

David Pashley
quelle
0

us: userspace - was Sie über dem Kernel ausführen sy: Systemaufrufe - was im Kernel ausgeführt wird ni: reniced Prozesse id: idle wa: Warten auf E / A hi: Hardware-Interrupts - wie viel Zeit wird für den Umgang mit Hardware aufgewendet si: Software-Interrupts - Wie viel Zeit wird für die Bearbeitung von durch Software erstellten Interrupts (Systemaufrufe usw.) aufgewendet?

Ric
quelle