2010-12-01 8 views
9

Ich habe ein Problem, das mich verrückt macht. Ich betreibe oben im Batch-Modus mit dem folgenden Befehl,CPU-Auslastung im obersten Stapelmodus

top -b -n 1

Das Problem ist, ich oben im Batch-Modus 100-mal ausgeführt werden kann, aber die CPU-Auslastung ändert sich nie über den ursprünglichen Wert. Die Speicherbelegung ändert sich wie erwartet, aber die CPU bleibt gleich. Wenn ich gleichzeitig ein anderes Top in einem anderen Fenster führe, ändert sich die CPU-Auslastung für dieses Top, aber nicht für das Top im Batch-Modus.

Grundsätzlich scheint CPU-Statistiken im Batch-Modus nicht zu ändern und im interaktiven Modus zu tun. Weiß jemand warum? Probieren Sie es selbst aus, führen Sie den obigen Befehl einige Male aus und beobachten Sie, dass die CPU-Auslastung gleich bleibt. Führen Sie dann im interaktiven Modus die oberste Ebene aus und beobachten Sie, wie sich die CPU-Auslastung ständig ändert.

+0

Funktioniert hier gut, sonst können Sie 'ps' oder vielleicht' sar | verwenden Schwanz -1' – Anders

+0

Ich sehe das gleiche Verhalten. Der Stapelbefehl darf nicht lange genug ausgeführt werden, um gute Akkumulatoren für die CPU-Nutzung zu erhalten. – aschepler

+0

Aschepler, Es scheint, dass das der Fall ist, aber ich habe das nirgendwo anders erwähnt gesehen. Wenn Sie die Iterationen auf 2 setzen, funktioniert es. Das Problem ist, ich brauche es für 1 Iteration zu arbeiten. – toc777

Antwort

6

In der ersten Iteration wird die durchschnittliche CPU-Auslastung seit dem Systemstart angezeigt.

(Beachten Sie, dass dies für neuere Versionen von top nicht mehr der Fall ist).

+0

Ja, das scheint der Fall zu sein. – toc777

+2

Woher weißt du das? –

2

Hier ist ein Liner, der die kumulative CPU-Auslastung über einen längeren Zeitraum anzeigt, in diesem Fall 5 Sekunden. Sie können es mit der Option -d anpassen.

top -b -d 5 -n 2 | awk '$1 == "PID" {block_num++; next} block_num == 2 {sum += $9;} END {print sum}' 
Verwandte Themen