it-swarm.com.de

Wie wird die CPU-Last protokolliert?

Wie protokolliere ich die CPU-Last in einer Datei, um ein Problem zu untersuchen?

27
tommyk

Das funktioniert sehr gut:

 while true; do uptime >> uptime.log; sleep 1; done
  • Dadurch wird Ihre CPU-Last jede Sekunde protokolliert und an eine Datei uptime.log angehängt.

    Sie können diese Datei dann in Gnumeric oder das OpenOffice-Arbeitsblatt importieren, um ein Nizza-Diagramm zu erstellen (wählen Sie beim Import 'Durch Leerzeichen getrennt' aus).

Wie Scaine bemerkte, wird dies nicht ausreichen, um das Problem zu diagnostizieren. Führen Sie also zusätzlich Folgendes aus (oder verwenden Sie seine Antwort für diesen Teil):

while true; do (echo "%CPU %MEM ARGS $(date)" && ps -e -o pcpu,pmem,args --sort=pcpu | cut -d" " -f1-5 | tail) >> ps.log; sleep 5; done
  • Dadurch werden alle fünf Sekunden die Top 10 der am stärksten CPU-beanspruchten Prozesse an eine Datei ps.log angehängt.

    Beachten Sie, dass dies nicht die vollständige Bootsladung an Informationen ist, die top Ihnen geben würde. Dies sind nur die Top 10 und nur ihre CPU-Auslastung, Speicherauslastung und das erste Argument (d. H. Ihr Befehl ohne weitere Argumente, wie in /usr/bin/firefox).

Nachdem Sie mithilfe einer Kalkulationstabelle ein Diagramm erstellt haben, um festzustellen, wann die CPU-Auslastung das Dach überschritten hat, können Sie diese Datei nach dem nächstgelegenen Zeitpunkt durchsuchen, um festzustellen, durch welchen Prozess dies verursacht wurde.

So sehen diese Dateien aus:

uptime.log

~$ cat uptime.log 
 22:57:42 up 1 day,  4:38,  4 users,  load average: 1.00, 1.26, 1.21
 22:57:43 up 1 day,  4:38,  4 users,  load average: 0.92, 1.24, 1.21
 22:57:44 up 1 day,  4:38,  4 users,  load average: 0.92, 1.24, 1.21
 22:57:45 up 1 day,  4:38,  4 users,  load average: 0.92, 1.24, 1.21
 ...

ps.log

%CPU %MEM ARGS Mo 17. Jan 23:09:47 CET 2011
 0.7  0.9 /usr/bin/compiz
 0.8  0.5 /usr/lib/gnome-panel/clock-applet
 1.1  1.7 /opt/google/chrome/chrome
 1.2  0.3 /usr/bin/pulseaudio
 1.8  4.0 /opt/google/chrome/chrome
 2.6  1.5 /opt/google/chrome/chrome
 2.6  3.2 /usr/bin/google-chrome
 3.6  2.6 /opt/google/chrome/chrome
 4.9  1.5 /usr/bin/X
 5.7  1.6 /opt/google/chrome/chrome
%CPU %MEM ARGS Mo 17. Jan 23:09:48 CET 2011
 0.7  0.9 /usr/bin/compiz
 0.8  0.5 /usr/lib/gnome-panel/clock-applet
 1.0  1.7 /opt/google/chrome/chrome
 1.2  0.3 /usr/bin/pulseaudio
 1.8  4.0 /opt/google/chrome/chrome
 2.6  1.5 /opt/google/chrome/chrome
 2.6  3.2 /usr/bin/google-chrome
 3.6  2.6 /opt/google/chrome/chrome
 4.9  1.5 /usr/bin/X
 5.7  1.6 /opt/google/chrome/chrome
 ...
39
Stefano Palazzo

Sie können den Befehl top im Stapelmodus ausführen, indem Sie die Option -b verwenden und diese dann in eine Datei ausgeben.

Öffnen Sie beim Starten Ihres PCs ein Terminal und führen Sie es aus

top -b > ~/cpu.txt

Wenn Ihr PC dann einfriert, öffnen Sie einfach die (wahrscheinlich große) Textdatei und überprüfen Sie den letzten Eintrag auf Details zu dem, was gerade vor dem Absturz ausgeführt wurde. Tatsächlich ist die Datei so dumm, dass Sie besser einen tail -250 ~/cpu.txt ausführen sollten.

Überprüfen Sie auch Ihre Datei /var/log/kern.log, falls Ihr Problem hardwarebezogen ist (unwahrscheinlich, wenn dies erst nach einem Upgrade geschieht, aber es lohnt sich trotzdem, dies zu überprüfen).

10
Scaine