Jak widać ekran htop jest podzielony na kilka części zawierających kolejno:
- informacje o obciążeniu procesora zajętości pamięci i pliku wymiany
- ilości uruchomionych procesów (tasks)
- średnim obciążeniu sytemu (load average)
- czasie działania systemu (uptime)
- interaktywną listę procesów
Każda ze wspomnianych części jest konfigurowalna przez użytkownika. Klawisz F2 daje nam dostęp do menu „setup” gdzie mamy cały wachlarz możliwości ustawień co, gdzie i w jakiej formie htop ma nam pokazywać.
Zatrzymajmy się na chwilę przy każdej części:
Obciążenie procesora, zajętość pamięci, i użycie pliku wymiany: htop pokazuje każdy procesor bądź rdzeń na osobnym wskaźniku. Tak więc w przypadku, gdy w systemie mamy jeden procesor 1-rdzeniowy, to zobaczymy jeden wskaźnik. Jeśli natomiast nasz komputer posiada jeden procesor 4-rdzeniowy, bądź dwa 2-rdzeniowe to htop pokaże nam w każdym przypadku cztery wskaźniki.
Lista procesów: procesy w formie listy lub drzewa, które możemy sortować pod względem wykorzystania procesora, pamięci, itp. Najbardziej rzuca się w oczy możliwość „przewijania” listy procesów zarówno w pionie jak i poziomie, co pozwala na pokazanie kompletnej listy procesów wraz z kompletną linią poleceń. Htop umożliwia także „zabicie”, jak i zmianę parametru „nice” procesu, bez podawania jego numeru PID, jak to ma miejsce w top, wyświetlenie otwartych plików przez dany proces, czy też śledzenie jego wywołań systemowych. F1, bądź ? daje nam dostęp do ekranu pomocy, gdzie opisane są możliwości programu w tym zakresie.
Tasks, load average, uptime: tutaj chciałbym zatrzymać się na dłużej, gdyż o ile tasks i uptime mówią raczej same za siebie, to load average jest bardzo ciekawym parametrem, gdyż dzięki niemu możemy w jednej chwili ocenić czy nasz system ma kłopoty wydajnościowe związane z procesorem, czy też nie. Jak sama nazwa wskazuje wyraża on średnie obciążenie, jednak nie w formie do jakiej z reguły jesteśmy przyzwyczajeni czyli „procentów”. Zamiast tego mamy trzy liczby. Są to średnie obciążenia systemu liczone odpowiednio w czasie: ostatniej minuty, pięciu ostatnich minut i piętnastu minut. Natomiast cyfry oznaczają liczbę procesów wykonywanych w danej chwili i liczbę procesów czekających na dostęp do procesora.
Reasumując:
Load average: 2.23, 0.89, 0,60 odczytujemy następująco: w ciągu ostatniej minuty w naszym systemie wykonywany był średnio jeden proces a drugi i „jeszcze trochę” czekało w kolejce na dostęp do procesora. Przekładając to na procenty możemy powiedzieć że średnio licząc nasz procesor miał o 123% więcej zadań do zrealizowania niż był w stanie zrobić. W ujęciu pięciu minut, miał do wykonania 0.89 procesu, a więc przekładając był obciążony w 89%, a w ujęciu piętnastu minut w 60%. Jaka wartość load average świadczy że nasz system nie ma problemów z wydajnością od strony procesora? Każda poniżej 1.00. Teoretycznie przy wartości 1.00 procesor jest w pełni i optymalnie wykorzystany, ale osobiście liczby około 0.80 przyjmuję jako wartości skłaniające do rozmyślań o rozbudowie serwera.
Pamiętajmy w tym miejscu o bardzo istotnej kwestii – ilości procesorów i rdzeni. Na maszynach 4-rdzeniowych możecie spotkać się z load average o wartości na przykład 3.55 i system będzie działał płynnie. Taka wartość load average na sprzęcie z jednym 1-rdzeniowym procesorem spowoduje praktycznie całkowite zapchanie systemu. Ma to miejsce dla tego, że load average jest liczony dla każdego rdzenia osobno, a więc na maszynie z szesnastoma rdzeniami może spokojnie wynosić dajmy na to 12.76 i to tylko świadczy o tym, że dobrze zaplanowaliśmy nasz zakup.
Na koniec rodzynek – system przyzwoicie obciążony czyli load average = 94.43, 58.04, 27.70
(źródło: http://htop.sourceforge.net/)
Ten program akurat znałem (w przeciwieństwie do opisywanego wcześniej iftop) i uważam, że jest niezwykle przydatny!
Paweł Sochaj liked this on Facebook.
Program znałem, jednakże dzięki wielkie za wyjaśnienie tego "Load Average", to mnie zastanawiało.
To tak na logikę ten parametr można dzielić przez liczbę procesorów w systemie.
Oczywiście, jeśli podzielisz LA przez liczbę procesorów i rdzeni to otrzymasz parametr jakby z punktu widzenia systemu z jednym procesorem.
Obawiam się, że nie jest to prawda. Tę wartość NALEŻY dzielić przez liczbę procesorów (także rdzeni). Load 2 na dwuprocesorowej maszynie oznacza pełne wykorzystanie obu rdzeni. Load 1, jednego.
No właśnie to napisałem, przynajmniej według mnie ;)
Bardzo fajne narzedzie, nie rozumiem czemu jeszcze nie zastapilo domyslnego TOPa. Jedna z pierwszych rzeczy jaka robie na swierzo postawionym systemie to doinstalowywuje wlasnie HTOP.
To jeszcze warto zainstalować przeglądarkę www z wbudowanym automatycznym sprawdzaniem błędów. :)
Top wystarcza. Pokazuje praktycznie to samo i mniej obciąża sam system. Też ładnie koloruje i pokazuje obciążenie per core. Można zmusić go do innych cudów nawet i jest zawsze pod ręką.
Justyna Cieplik liked this on Facebook.
Load Average to jednak nie tylko procesor. Z doświadczenia widziałem serwery gdzie LA było powyżej 5 a patrząc po procesach nic się nie działo – niestety serwer był mocno ubity i chodził jak krowa. Do LA wliczane są również procesy, który czekają na dane z magistrali I/O, czyli możliwe są sytuacje kiedy dyski nie wyrabiają, LA jest gigantyczne a procek się nudzi.
Szczególnie jest to widoczne w przypadkach kiedy macierz dysków zaczyna świrować i system cały czas czeka na dane.
Bardzo słuszna uwaga. Potraktowałem trochę po macoszemu temat I/O (miał być kolejnym tematem w kwestii monitorowania zasobów;)) skupiając się na samym procesorze i faktycznie mamy tutaj niedomówienie.
Jest dokładnie tak jak mówisz – może być tak że procesor "nic nie robi" a LA jest wysokie bo kilka procesów czeka na zakończenie operacji wejścia/wyjścia, dyskowych bądź sieciowych, procesy te są w stanie o ładnej nazwie: "uninterruptible sleep state" i czekają na dane z podsystemu I/O niezbędne to ich dalszego wykonywania przez procesor. Reasumując na kolejkę która ma wpływ na wartość LA składają się: proces aktualnie wykonywany przez procesor, procesy czekające na dostęp do procesora i procesy czekające na dane z podsystemów wejścia/wyjścia.
Wielkie dzięki za zwrócenie uwagi.
Tam powinno być 223% a nie 123% zdaje się. Jeżeli jeden proces to jest 1.00=100%, drugi kolejne 1 czyli 2 w sumie 200%=2.00 i jeszcze trochę czyli 23%=0,23 to w sumie daje 2,23=223% a nie 123%. To zresztą potwierdza kolejne zdanie, w którym 0,89 traktujesz jak 89%.