Jak czytać htop

9

Mam problem ze zrozumieniem informacji wyświetlanych przez htoppopularny zamiennik polecenia top Linux.

zrzut ekranu htop

Na powyższym zrzucie ekranu wymieniono wiele instancji Java, ale tylko ta nadrzędna wykorzystuje czas procesora. Jakie są pozostałe

Dlaczego paski wykorzystania procesora pokazują tak zajęte rdzenie, gdy kolumna% procesora pokazuje niewiele dzieje się we wszystkich procesach? W rzeczywistości poruszają się przez większość czasu bez korelacji.

Dlaczego średnia obciążenia, w prawym górnym rogu, która, jak zakładam, jest 3-etapową historią, jest tak niska, gdy rdzenie są prawie zawsze zielone i wyglądają na zajęte?

Czy ktoś byłby tak uprzejmy, aby wyjaśnić, jak odczytać te informacje?

Dziękuję Ci!

Luke Puplett
źródło
Wprowadziłem kilka zmian, które bardzo pomagają. Wyświetlaj wątki w innym kolorze, wyświetlaj nazwy wątków, aktualizuj nazwy procesów podczas odświeżania, a przede wszystkim zmieniając opóźnienie na 2/10 sekund. Domyślna prędkość aktualizacji pokazuje po prostu ogromne opóźnienie między miernikami procesora a procesami.
Luke Puplett
1
Przynajmniej dla średniej obciążenia niekoniecznie jest to niska wartość. Obciążenie jest zasadniczo wskaźnikiem, czy system musi poczekać, aby coś zrobić. Dopuszczalna wartość jest mniejsza niż liczba rdzeni, w tym przypadku 4. Zatem te średnie są rozsądne. Są to ostatnie 1, 5 i 15 minut. Aby uzyskać więcej informacji, zobacz [Wikipedia] ( en.wikipedia.org/wiki/Load_(computing))
ssmy

Odpowiedzi:

5
  1. Jeśli chodzi o „Obciążenie” i% procesora, wikipedia zawiera szczegółowe wyjaśnienia i przykład, a poniżej znajduje się częściowy cytat

    Bezczynny komputer ma liczbę ładowania 0, a każdy proces używający procesora lub oczekujący na kolejkę (kolejkę gotową lub kolejkę uruchomioną) zwiększa liczbę ładowań o 1. Większość systemów UNIX zlicza tylko procesy działające (na procesorze) lub uruchamialne (czekając na CPU). Jednak Linux obejmuje również procesy w nieprzerwanych stanach uśpienia (zwykle czekających na aktywność dysku), co może prowadzić do wyraźnie odmiennych wyników, jeśli wiele procesów pozostanie zablokowanych we / wy z powodu zajętego lub zablokowanego systemu we / wy. Obejmuje to na przykład procesy blokujące z powodu awarii serwera NFS lub spowolnienia nośnika (np. Urządzenia pamięci USB 1.x). Takie okoliczności mogą skutkować podwyższoną średnią obciążeniem, co nie odzwierciedla faktycznego wzrostu wykorzystania procesora (ale nadal daje wyobrażenie o tym, jak długo użytkownicy muszą czekać).

    Systemy obliczają średnią obciążenia jako wykładniczo tłumioną / ważoną średnią ruchomą liczby obciążenia. Trzy wartości średniej obciążenia odnoszą się do ostatnich 1, 5 i 15 minut pracy systemu.

    W przypadku systemów jednoprocesorowych, które są związane z procesorem, przeciętny ładunek można traktować jako procent wykorzystania systemu w danym okresie. W przypadku systemów z wieloma procesorami należy podzielić liczbę przez liczbę procesorów, aby uzyskać porównywalny odsetek.

    Słupki mogą być zajęte ruchem, ale nigdy nie osiągają 100%, co wskazuje, że procesor / rdzeń jest w pełni wykorzystany. Pasek stanowi jedynie wizualizację% wykorzystania procesora, które wynoszą 27%, 26,5%, 24,5%, 24,7% i 71,7%. Wszystkie rdzenie procesora nadal mają moc „oszczędzania”. W tym momencie wszystkie są niedostatecznie wykorzystane.

    W pełni wykorzystany system 5 rdzeni / procesorów będzie miał obciążenie 5 lub więcej.

  2. Jeśli chodzi o wiersze Java, są to procesy nadrzędne (PID = 5073) i podrzędne. Nie potrafię wyjaśnić, dlaczego rodzic gromadzi najwięcej czasu procesora. To naprawdę zależy od wewnętrznej logiki programu. Jednak zgodnie z TIME + te procesy potomne zużywały czas procesora, przy czym ostatni (PID = 5074) był najbardziej skumulowany.

John Siu
źródło
Czy to możliwe, że procesy potomne są pulą wątków JVM? Kiedy ustawiam opcję wyświetlania nazw wątków, wszystkie mają takie same nazwy. Jestem programistą Windows + .NET, FYI.
Luke Puplett
Tak, możliwe, że są wątkami.
John Siu