Chciałbym monitorować wykorzystanie pamięci / procesora jednego procesu w czasie rzeczywistym. Podobny, top
ale ukierunkowany tylko na jeden proces, najlepiej z pewnego rodzaju wykresem historycznym.
shell
process
monitoring
top
Josh K.
źródło
źródło
Odpowiedzi:
W systemie Linux
top
faktycznie koncentruje się na pojedynczym procesie, chociaż oczywiście nie ma wykresu historii:Jest to również dostępne w systemie Mac OS X z inną składnią:
źródło
top -p `pgrep -f /usr/bin/kvm`
.hostname
_pid.txt; exit'andhtop
jest doskonałym zamiennikiemtop
. Ma ... Kolory! Proste skróty klawiaturowe! Przewiń listę za pomocą klawiszy strzałek! Zabij proces bez wychodzenia i bez odnotowywania PID! Oznacz wiele procesów i zabij je wszystkie!Wśród wszystkich funkcji strona podręcznika mówi, że możesz nacisnąć, Faby wykonać proces.
Naprawdę powinieneś spróbować
htop
. Nigdy więcej nie zacząłemtop
, po raz pierwszyhtop
.Wyświetl pojedynczy proces:
htop -p PID
źródło
top
ma również kolory. Prasaz
.top
ma kolory! Szkoda, że jego kolory są dość bezużyteczne, szczególnie w porównaniu dohtop
(które zanika procesy innych użytkowników i podkreśla basename programu).htop -p PID
będzie działać, podobnie jak przykład podany przez @Michaela Mrożka.psrecord
Poniższy wykres historii adresów pewnego rodzaju .
psrecord
Pakiet Python robi dokładnie to.W przypadku pojedynczego procesu jest to (zatrzymane przez Ctrl+C):
W przypadku kilku procesów pomocny jest następujący skrypt do synchronizacji wykresów:
Wykresy wyglądają następująco:
profiler pamięci
Pakiet zapewnia RSS-tylko próbkowania (plus niektóre opcje specyficzne dla Pythona). Może także rejestrować proces z procesami potomnymi (patrz
mprof --help
).Domyślnie wyświetla się
python-tk
eksplorator wykresów oparty na Tkinter ( może być potrzebny), który można wyeksportować:grafit-stos i statystyki
Może to wydawać się przesadą dla prostego jednorazowego testu, ale dla czegoś takiego jak kilkudniowe debugowanie jest z pewnością rozsądne. Poręczne urządzenie
raintank/graphite-stack
wielofunkcyjne (od autorów Grafany)psutil
istatsd
klient.procmon.py
zapewnia wdrożenie.Następnie w innym terminalu, po uruchomieniu procesu docelowego:
Następnie otwierając Grafana na http: // localhost: 8080 , uwierzytelnianie jako
admin:admin
, konfigurowanie źródła danych https: // localhost , możesz wykreślić wykres jak:stos grafitowy i telegraf
Zamiast skryptu Python wysyłającego metryki do Statsd
telegraf
(iprocstat
wtyczki wejściowej) można użyć do bezpośredniego przesłania metryk do Graphite.Minimalna
telegraf
konfiguracja wygląda następująco:Następnie uruchom linię
telegraf --config minconf.conf
. Część Grafana jest taka sama, z wyjątkiem nazw metryk.sysdig
sysdig
(dostępne w repozytoriach Debiana i Ubuntu) z interfejsem użytkownika sysdig-inspect wyglądają bardzo obiecująco, dostarczając niezwykle drobiazgowych szczegółów wraz z wykorzystaniem procesora i RSS, ale niestety interfejs użytkownika nie jest w stanie ich renderować isysdig
nie może filtrowaćprocinfo
zdarzenia według procesu na czas pisania. Chociaż powinno to być możliwe dzięki niestandardowemu dłutowi (sysdig
rozszerzenie napisane w Lua).źródło
pgrep --help
na ratunek. Jest przynajmniej--newest
i--oldest
.Ctrl+C
psrecord proces psrecord po prostu kończy pracę bez zapisywania wykresu, należy zakończyć testowany proces.Aby użyć tych informacji w skrypcie, możesz to zrobić:
calcPercCpu.sh
użyj jak:
calcPercCpu.sh 1234
gdzie 1234 jest pidDla podanego $ nPid będzie mierzył średnio 10 migawek użycia procesora w ciągu całej 1 sekundy (opóźnienie 0,1 s każdy * nTimes = 10); co zapewnia dobry i szybki dokładny wynik tego, co dzieje się w danym momencie.
Dostosuj zmienne do swoich potrzeb.
źródło
$nPercCpu
): shell, top, grep, sed, cut ... bc. Wiele, jeśli nie wszystkie z nich, można na przykład połączyć w skrypt 1 Sed lub Awk.top
wynik jest przeciętny$delay
. Por. Jak obliczyć zużycie procesoraZwykle używam następujących dwóch:
Suwmiarka HP : to bardzo dobre narzędzie do monitorowania procesów, można również sprawdzić wykres połączeń i inne informacje niskiego poziomu. Pamiętaj jednak, że jest bezpłatny tylko do użytku osobistego.
daemontools : zbiór narzędzi do zarządzania usługami UNIX
źródło
Używając
top
iawk
można łatwo stworzyć np. Oddzielony przecinkami dziennik użycia % CPU ($9
) +% MEM ($10
), który można później wprowadzić do dowolnego narzędzia statystycznego i graficznego.Wyjście będzie jak
Nie da to jednak dobrych wyników dla dużych
$delay
, ponieważ wydrukowany znacznik czasu jest$delay
opóźniony ze względu na to, jaktop
działa wyjście. Bez wchodzenia w zbyt wiele szczegółów, jednym prostym sposobem na obejście tego jest zarejestrowanie czasu dostarczonego przeztop
:Wówczas znacznik czasu jest dokładny, ale wyjście nadal będzie opóźnione o
$delay
.źródło
Jeśli znasz nazwę procesu, możesz użyć
źródło
Jeśli masz wyciętą dystrybucję Linuksa, w której top nie ma opcji na proces (-p) lub powiązanych opcji, możesz przeanalizować dane wyjściowe komendy top dla nazwy procesu, aby uzyskać informacje o zużyciu procesora na proces.
8 reprezentuje użycie procesora na proces w danych wyjściowych polecenia top w mojej wbudowanej dystrybucji Linuksa
źródło
Brak wystarczającej reputacji do skomentowania, ale w przypadku psrecord możesz także wywołać go bezpośrednio, w sposób programowy, bezpośrednio w Pythonie:
źródło
Jeśli potrzebujesz średnich z okresu określonego procesu, wypróbuj opcję akumulacji -c na górze:
„-c a” znaleziono na górze dla Mac 10.8.5.
W Scientific Linux opcja to -S, którą można ustawić interaktywnie.
źródło
top
faktycznie oferują tę funkcję. Moja wersja na Fedorze 19 nie. To samo dotyczy Ubuntu 13.04.