Jak mogę sprawdzić, czy proces jest związany z procesorem, pamięcią lub dyskiem?

42

Jak mogę sprawdzić, czy proces jest powiązany z procesorem, pamięcią lub dyskiem?

ssanj
źródło
Jeśli używasz graficznego interfejsu użytkownika gnome, możesz dodać aplet Monitora systemu do swojego panelu. W ustawieniach możesz ustawić cykle utracone dla IO-Wait, aby wyświetlały się jako białe, oraz ustawić wykresy Pamięć, Procesor i Odczyt / Zapis dysku do pokazania. Zwykle zmieniam domyślne kolory wykresów, aby ułatwić rozróżnienie pamięci użytkownika / systemu operacyjnego oraz odczytu / zapisu dysku. To nie jest prawdziwe rozwiązanie, ale dobrze jest mieć wszystkie narzędzia wymienione w odpowiedziach.
Jeremy,
1
@ luis-alvarado Nie zgadzam się, że to pytanie nie jest przydatne, choć twierdzę, że lepiej by to pasowało na StackOverflow lub podobnym. Przybyłem tutaj, szukając rozwiązania.
skeggse
Problem z zadanym pytaniem polega na tym, że nie uwzględnia ono środowiska wykonywania. Która metoda jest najbardziej skuteczna w wykrywaniu wąskiego gardła komponentu hosta zadania / procesu jest ściśle związana ze środowiskiem wykonawczym, środowiskiem wykonawczym, systemem operacyjnym hosta, sprzętem itp. Zadania oraz jakie narzędzia są dostępne dla każdego komponentu do jego kontroli. Niektóre środowiska wykonawcze (na przykład środowisko uruchomieniowe Erlang lub JVM IBM) mają do tego dogłębne narzędzia niż obejmują całe środowisko, inne zupełnie nie wymagają narzędzi i pozostawiają wykształcone domysły na podstawie dowolnego htop / iotop / etc. mogę ci pokazać.
zxq9
Powiązane: stackoverflow.com/questions/3156334/...
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

19

To wymaga trochę voodoo. To zależy. Przykład:

  • Jeśli ilość pamięci jest wystarczająca, a dyski nie wydają się zbyt zajęte, może być związane z procesorem. Spójrz na użycie procesora, a jeśli graniczy w 100%, jest związany z procesorem. Jeśli nie, to we wdrażaniu jest sztuczne wąskie gardło. Np. W dwurdzeniowym procesorze proces jedno-wątkowy nie przekroczy 50% wykorzystania procesora.

  • Jeśli procesor i pamięć są dostępne, ale dyski są bardzo zajęte lub opóźnienie we / wy wydaje się wysokie, istnieje prawdopodobieństwo, że jego we / wy jest związane. Sprawdź, czy dodanie kolejnych dysków (RAID?) Pomaga.

  • Żadne z powyższych? Sprawdź dostępną pamięć.

  • Wystarczająca pamięć? Może występować sztuczne wąskie gardło w samym procesie, np. Może ktoś zapomniał usunąć sen (1)? Nie, zwykle nie jest to takie łatwe. ;)

Jest powód, dla którego mamy całe laboratorium inżynierów wydajności w większości firm zajmujących się produktami wrażliwymi na wydajność!

Użyj narzędzi takich jak sar, vmstat, iostat, oprofile, lockstat, dtrace, specyficzne dla produktu narzędzia do monitorowania perf itp., Aby debugować problemy z perf.

Sudhanshu
źródło
2
Czy istnieje narzędzie, które łączy je wszystkie?
ssanj
zazwyczaj nie, ale jeśli dtrace jest dostępny w twoim systemie (Solaris / FreeBSD / Mac OS X?), możesz się daleko posunąć, korzystając z niego.
Sudhanshu,
Właśnie przypomniałem sobie, że na Linuksie jest Systemtap (podobny do dtrace), ale nie jestem pewien, czy dojrzałość tego narzędzia.
Sudhanshu,
vmstat jest użyteczny.
James
12

sprawdź iotop, może być przydatne

ithkuil
źródło
iotop nie został domyślnie zainstalowany w Redhat
Mona Jalal
9

Narzędziem, które może być przydatne do sprawdzania w czasie rzeczywistym szeregu statystyk procesu (pamięci, użycia procesora, operacji we / wy itp.) Jest htop . Nie zastępuje bardziej wyspecjalizowanych narzędzi o nazwie Sudhanshu, ale może być dobrym początkiem.

JanC
źródło
4

Oprócz innych wymienionych narzędzi uruchom ps l PID, wstaw odpowiedni identyfikator procesu lub spójrz na kolumny STATE i WCHAN u góry lub u góry.

Jeśli jest w stanie D (dla dysku), wówczas wykonuje operacje we / wy pliku. Może to wynikać z tego, że albo odczytuje wiele plików, albo zużywa dużo pamięci i wymienia. Kolumna WCHAN powie ci, jaka funkcja jądra jest w środku; szukanie ich w Google lub pytanie tutaj może dać ci pewne wskazówki, co one oznaczają.

Jeśli jest w stanie R (uruchomionym), używa procesora w przestrzeni użytkownika, innymi słowy, jest on w tym momencie związany z procesorem.

Jeśli jest w stanie S (uśpienia), znajduje się w przerywanym wywołaniu systemowym, co może oznaczać, że albo faktycznie śpi, albo robi coś w stylu oczekiwania na ruch sieciowy lub blokadę. Ponownie, patrząc na konkretny wchan, powiem ci więcej.

Zobacz także Co to jest „kanał oczekiwania” procesu?

poolie
źródło
2

Uruchom topi spójrz na linię użycia procesora. Wysoki użytkownik% wskazuje, że jest związany z jednostką centralną. Wysoki% oczekiwania oznacza, że ​​jest on związany z IO.

psusi
źródło