8 Stimmen

Erhalten Sie die CPU-Auslastung im Shell-Skript?

Ich führe einige JMeter-Tests gegen einen Java-Prozess durch, um zu bestimmen, wie reaktionsschnell eine Webanwendung unter Last (500+ Benutzer) ist. JMeter wird die Antwortzeit für jede Webanfrage anzeigen, und ich habe ein Skript geschrieben, um alle X Sekunden den Tomcat Manager anzupingen, um die aktuelle Größe des JVM-Heap zu erhalten.

Ich möchte Statistiken zum Server darüber sammeln, wie viel % der CPU von Tomcat verwendet wird. Ich habe versucht, dies in einem Shell-Skript mit ps wie folgt zu tun:

PS_RESULTS=`ps -o pcpu,pmem,nlwp -p $PID`

...das Kommando alle X Sekunden ausführen und die Ergebnisse an eine Textdatei anhängen. (für alle Neugierigen, pmem = % Speicherauslastung und nlwp ist die Anzahl der Threads)

Ich habe jedoch festgestellt, dass dies eine andere Definition von "% der CPU-Auslastung" liefert, als ich möchte - gemäß den Manpages für ps wird pcpu wie folgt definiert:

CPU-Auslastung des Prozesses im Format "##.#". Es ist die verwendete CPU-Zeit geteilt durch die Zeit, die der Prozess ausgeführt wurde (cputime/realtime-Verhältnis), ausgedrückt als Prozent.

Mit anderen Worten, pcpu gibt mir die % CPU-Auslastung des Prozesses für die gesamte Lebensdauer des Prozesses.

Da ich alle X Sekunden eine Stichprobe nehmen möchte, möchte ich die CPU-Auslastung des Prozesses nur zum aktuellen Zeitpunkt erfassen - ähnlich wie das, was top mir geben würde (CPU-Auslastung des Prozesses seit dem letzten Update).

Wie kann ich dies in einem Shell-Skript erfassen?

0voto

isalgueiro Punkte 1794

Dies liefert Ihnen keine Metrik pro Prozess, aber das Stress Terminal UI ist super nützlich, um zu wissen, wie sehr Sie Ihre Boxes bestrafen. Fügen Sie die -c Flagge hinzu, um die Daten in eine CSV-Datei abzulegen.

Bildbeschreibung hier eingeben

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X