Jak rejestrować użycie procesora według procesu?

18

Mam pudełko na Linode, które zachowuje się dziwnie. Co jakiś czas procesor i dyskowe operacje we / wy strzelają do 100%, a serwer przestaje reagować i trzeba go uruchomić. Chciałbym lepiej zbadać, co się dzieje, ale nie wiem, jak znaleźć osobę odpowiedzialną za cały procesor i operacje we / wy. Używam Gentoo 2.6.18.

Helder S. Ribeiro
źródło

Odpowiedzi:

20

Możesz spróbować zrobić coś takiego:

while true; do ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10 >> logfile.txt; printf "\n" >> logfile.txt; sleep 3; done

pokaże Ci dziesięć najlepszych procesów pod względem wykorzystania procesora. Możesz zmienić liczbę wyświetlanych procesów, zmieniając 10 w „head -10” na inną liczbę i jak często się aktualizuje, zmieniając 3 w „sleep 3” lub całkowicie usuwając część „sleep 3”.

Shawn
źródło
5
Upewnij się, że masz tam trochę snu, w przeciwnym razie istnieje duża szansa, że ​​twój proces powłoki będzie zawsze w pierwszej 10. :)
jedberg 10.10.2009
Myślę, sort -nrże lepiej posortować dane liczbowe (przynajmniej na moim Ubuntu / Debian Boxen)
2013
2
BTW, powinieneś nadać temu procesowi najwyższy priorytet, aby był on użyteczny podczas szczytów dużego obciążenia (w końcu jest to okres jego życia).
spacediver
12

Sprawdź na górze, że zapisze binarny dziennik prawie wszystkiego, czego możesz chcieć, a następnie możesz użyć topu takiego jak GUI, aby przejrzeć przedziały czasowe dnia (domyślnie dane są pobierane co 5 minut). http://www.atcomputing.nl/Tools/atop/

ScottZ
źródło
6

Myślę, że Munin jest jednym z narzędzi monitorowania towarów, które pomogą ci uzyskać informacje o działaniach twojego pudełka. Istnieją również narzędzia wiersza poleceń, takie jak sar , iostat, ps, top do takiego zastosowania.

Ali Mezgani
źródło
5

Inne odpowiedzi pokazały tylko, jak możesz patrzeć na to, co się obecnie dzieje, co nie pomaga, jeśli system został ponownie uruchomiony.

Jeśli chcesz, aby te informacje były rejestrowane dla potomności (lub fakturowania, lub jakiegokolwiek innego wykorzystania, jaki możesz mieć), potrzebujesz księgowości procesowej.

Oto HOWTO, które znalazłem, ale będę szczery - minęła dekada, odkąd korzystam z księgowości procesów.

http://tldp.org/HOWTO/Process-Accounting/

Rob F.
źródło
2

Bardziej przyjazne dla użytkownika podejście do rozwiązania Shawn do monitorowania prawie w czasie rzeczywistym:

while true; do clear; ps -eo pcpu,pmem,pid,user,args --sort=-pcpu c|head -20; sleep 1; done

Zapewni to statyczny widok 20 najlepszych procesów, które będą odświeżane co 1 sekundę. Opcja „c” w komendzie ps wypisuje nazwę pliku wykonywalnego procesu zamiast całej komendy args. Możesz pominąć tę opcję, jeśli zamiast tego potrzebujesz całej informacji o poleceniu. Dodano także kolumnę% użycia pamięci.

manolis
źródło
1

Czy Gentoo nie ma polecenia „top” jako wel?

machine:~/# top

powinien dać ci bieżące statystyki, które programy powodują największe obciążenie.

Szczerość
źródło
Tak, wiem, ale chciałbym mieć to zalogowane, aby móc później zobaczyć historię. Gdy procesor przyspieszy, maszyna przestaje reagować, więc nie mogę się zalogować i uruchomić, topaby zobaczyć, kto jest winowajcą. Chcę to sprawdzić później i zobaczyć, który proces to zrobił.
Helder S Ribeiro,