Jak zalogować obciążenie procesora?

30

Jak zalogować obciążenie procesora do pliku, aby zbadać problem?

Tommyk
źródło

Odpowiedzi:

42

Działa to bardzo dobrze:

 while true; do uptime >> uptime.log; sleep 1; done
  • Pozwoli to rejestrować obciążenie procesora każdy drugi i dołączyć go do pliku uptime.log.

    Następnie możesz zaimportować ten plik do arkusza kalkulacyjnego Gnumeric lub OpenOffice, aby utworzyć ładny wykres (podczas importu wybierz „oddzielone spacjami”).

Jak zauważył Scaine, to nie wystarczy, aby zdiagnozować problem. Więc dodatkowo uruchom to (lub użyj jego odpowiedzi w tej części):

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
  • Spowoduje to dołączenie 10 najlepszych procesów wymagających największej mocy procesora do pliku ps.logco pięć sekund.

    Pamiętaj, że nie jest to pełny ładunek informacji dla łodzi top. To tylko 10 najlepszych i tylko ich użycie procesora, użycie pamięci i pierwszy argument (tj. Ich polecenie bez dalszych argumentów, jak w /usr/bin/firefox)

Po użyciu arkusza kalkulacyjnego do utworzenia wykresu pokazującego, kiedy obciążenie procesora przeszło przez dach, możesz następnie wyszukać ten plik w najbliższym czasie, aby zobaczyć, co spowodowało ten proces.

Tak będą wyglądać te pliki:

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
 ...
Stefano Palazzo
źródło
3
Czy to faktycznie wyświetla prawidłowe użycie procesora? Próbowałem tego na centos i tylko użycie pamięci było prawidłowe :(
Menelaos Bakopoulos
Jak mogę sprawić, by to polecenie działało na moim VPS nawet po zamknięciu połączenia Putty?
Lucas Bustamante
1
Jeśli zgłaszane użycie przez procesor psjest bezsensowne, spróbuj uruchomić go jako root.
Stefano Palazzo
Jak mogę sprawić, by to polecenie działało na moim VPS nawet po zamknięciu połączenia Putty ????
Mostafa,
10

Możesz uruchomić toppolecenie w trybie wsadowym, korzystając z -bopcji, a następnie zrzucić je do pliku.

Po uruchomieniu komputera otwórz terminal, uruchom

top -b > ~/cpu.txt

Następnie, gdy komputer zawiesza się, po prostu otwórz (prawdopodobnie ogromny) plik tekstowy i sprawdź ostatni wpis, aby uzyskać szczegółowe informacje na temat tego, co działało tuż przed awarią. W rzeczywistości plik będzie tak głupio duży, że lepiej jest uruchomić tail -250 ~/cpu.txtzamiast niego.

Sprawdź także /var/log/kern.log, jeśli Twój problem dotyczy sprzętu (mało prawdopodobne, jeśli dzieje się to dopiero po aktualizacji, ale mimo to warto sprawdzić).

Scaine
źródło
0

Dla tych, którzy muszą uruchomić to polecenie po zakończeniu sesji kitu (klienta SSH). możesz użyć polecenia screen(lub zainstalować za pomocą apt-get)

Mostafa
źródło