2017-07-13 5 views
3

Ich benutze eine Multi-Thread-Java-Anwendung auf Ubuntu. Ich möchte die CPU-Auslastung beobachten.Welche CPU-Auslastung spiegelt das wahre Bild wider?

Der Messwert, den ich von "Systemmonitor" sah, beträgt etwa 42% im Laufe der Zeit. Bedeutet das, dass die meisten CPUs nicht voll ausgelastet sind? Ich habe 8 Kerne.

Wenn ich es jedoch in "top" -Befehl sehe, zeigt es, dass meine Java-Anwendung über% 300 CPU (eine PID) verwendet.

Welche spiegelt das wahre Bild meiner CPU-Auslastung wider? Ich möchte sehen, ob und wie meine Java-Anwendung dem Threading zugute kommt.

+0

Es klingt, als ob Ihr Programm etwa CPUs mit 3 Kernen verwendet (~ 300% eines Kerns oder ~ 42% der gesamten 8-Kern-Box). Ich würde sagen, dass die beiden Zahlen in etwa übereinstimmen. – NPE

+1

Scheint wie "Systemmonitor" verwendet 100% = 8 Kerne unter Volllast, während oben verwendet 100% = 1 Kern unter Volllast. Sie scheinen also ungefähr 3 Kerne ausgereizt zu haben. –

+0

Wahrscheinlich bezieht sich die 42% Zahl auf den Prozessor während die 300% (8 x 42 = 336) auf einen einzelnen Kern. –

Antwort

4

Standardmäßig läuft top auf Linux im sogenannten IRIX-Modus.

Wenn der IRIX-Modus aktiviert ist, ist 1 voll ausgelasteter Kern 100% und 3 Kerne 300%. Wenn der IRIX-Modus deaktiviert ist, beträgt der voll ausgelastete 1/8 12,5%. Dies bedeutet in Top zeigt es über 300% und in "System Monitor" 40%.

Sie können den IRIX-Modus wechseln, während top mit Shift + i ausgeführt wird. Dadurch werden die Zahlen übereinstimmen.

+0

Großartig! Bedeutet das, dass ich die Anzahl der Threads noch erhöhen kann, um meine Bewerbung noch weiter zu beschleunigen? – user697911

+0

Ja. In Ihrem Beispiel sieht es so aus, als hätten Sie ungefähr 5 Kerne nicht ausgelastet. –

+0

Ich erhöhte die Anzahl der Threads von 10 auf 20, die CPU-Auslastung stieg nur von 40% auf 50%. Ich werde 50 Threads versuchen. Aber ich muss warten, um zu sehen, ob meine Anwendung tatsächlich in kürzerer Zeit abgeschlossen ist. – user697911

Verwandte Themen