Analiza wydajności systemu Linux z użyciem narzędzi htop i iostat 🖥️📊
Wprowadzenie
Monitorowanie wydajności to kluczowy aspekt zarządzania systemem Linux. Pozwala wykrywać wąskie gardła (CPU, RAM, I/O), diagnozować przeciążenia i reagować zanim usługa stanie się niestabilna. W tym artykule pokażę, jak używać dwóch popularnych narzędzi — htop i iostat — do analizy obciążenia w czasie rzeczywistym oraz historycznie.
Dla szerszego kontekstu zobacz też artykuł: „Problemy z wydajnością systemu Linux: Wysokie zużycie CPU/RAM, wolne działanie dysku i metody diagnozowania wąskich gardeł”. (netbe.pl)
1. htop — monitorowanie zasobów w czasie rzeczywistym
1.1 Co to jest htop
htopto interaktywne narzędzie terminalowe, ulepszona wersjatop, z kolorowym interfejsem, możliwością przewijania, filtrowania i zarządzania procesami bezpośrednio z terminala. (netbe.pl)- Dzięki htop możesz na bieżąco obserwować zużycie CPU (całych rdzeni i poszczególnych procesów), pamięć RAM / swapa, load average, liczby procesów oraz inne metryki.
1.2 Instalacja
W typowej dystrybucji Debian / Ubuntu instalacja jest prosta:
sudo apt update
sudo apt install htop
(w Debianie/Ubuntu menedżer pakietów apt używa się w tym celu) (netbe.pl)
1.3 Uruchamianie i podstawowe użycie
Po zainstalowaniu:
htop
Po uruchomieniu zobaczysz interaktywny widok procesów. Możesz:
- sortować kolumny (np. CPU %, MEM %, czas działania),
- filtrować procesy / wyszukiwać po nazwie,
- zabić proces lub zmienić priorytet,
- zobaczyć szczegóły dotyczące wątków / użytkowników.
1.4 Co analizować w htop
Kilka wskazówek, na co zwrócić uwagę:
| Metryka | Co oznacza / Dlaczego ważna |
|---|---|
| CPU % dla pojedynczych procesów | Procesy najbardziej obciążające — wskazuje źródło wykorzystania CPU |
| Load Average | Obciążenie systemu w czasie — liczy się w kontekście liczby rdzeni |
| Użycie RAM / swap | Czy systemu zaczyna korzystać ze swapu — może to wskazywać niewystarczającą pamięć fizyczną |
| Liczba procesów / wątków | Nagły wzrost procesów może wskazywać problem (fork-bomb, wyciek procesów) |
| Czas działania procesów | Długotrwale działające procesy mogą akumulować błędy lub nieszczelności (memory leak) |
1.5 Dodatkowe opcje i skróty
- W htop możesz zmieniać sortowanie klawiszami (np. klikając na nagłówki kolumny w interfejsie lub używając klawiszy F6 / F2 / F9).
- Możliwość pokazywania procesu jako drzewo, filtrowania po użytkowniku lub wątku.
To narzędzie świetnie sprawdza się do szybkiego diagnozowania przeciążenia CPU lub pamięci w czasie rzeczywistym.

2. iostat — analiza I/O i CPU historycznie
iostat to z kolei narzędzie z pakietu sysstat, służące do zbierania statystyk wejścia/wyjścia urządzeń dyskowych oraz CPU. Pozwala sprawdzić, które dyski lub interfejsy I/O są najbardziej obciążone oraz jak wygląda wykorzystanie CPU z perspektywy czasu.
2.1 Instalacja i podstawowe uruchomienie
Na Debianie / Ubuntu:
sudo apt update
sudo apt install sysstat
Upewnij się, że usługa sysstat działa — czasami konieczne jest włączenie zbierania statystyk (np. w pliku /etc/default/sysstat).
Przykładowe podstawowe użycie:
iostat
Lub z odświeżaniem co sekundę, np. 5 pomiarów:
iostat 1 5
2.2 Ważne metryki i interpretacja
iostat dostarcza kilka sekcji, m.in.:
| Sekcja | Co pokazuje |
|---|---|
| CPU usage | procentowy rozkład pracy CPU: użytkownik (user), system (system), nice, idle, IO-wait |
| Device util | informacje o poszczególnych urządzeniach / dyskach — np. ile procent czasu urządzenie jest zajęte (util), ile operacji I/O na sekundę (tps), transfer danych (kB/s) |
| Average queue size | jak długo procesy czekają na operacje I/O |
| rrqm/s i wrqm/s | liczba żądań scalanych (read / write merged) |
| %util | procent wykorzystania urządzenia; wartości bliskie 100 % mogą wskazywać przeciążenie dysku |
2.3 Przykład użycia i interpretacji
Załóżmy, że wykonujesz:
iostat -x 1 5
Parametr -x daje rozszerzone statystyki (rozszerzona analiza I/O). Każda linia pokazuje wartości dla urządzeń takich jak /dev/sda:
- Jeśli
%utilblisko 100% → dysk jest mocno obciążony — może być wąskim gardłem I/O. - Jeśli „await” (średni czas oczekiwania na I/O) jest wysoki → operacje I/O „stoi w kolejce” i powodują opóźnienia.
- Można zestawić to z wynikami z htop: jeśli CPU-wait / IO-wait rośnie w htop (kolumna „wa”), wygląda to na problem I/O-bound.
2.4 Weryfikacja przeciążeń I/O
Kiedy kariera procesora wydaje się być w normie, ale skargi dotyczą szybkości I/O (opóźnienia, wolne zapisy / odczyty), użyj iostat by:
- Sprawdzić, który dysk obsługuje operacje I/O najwięcej.
- Ustalić czy system jest „I/O bound” (więcej czasu oczekuje na operacje dyskowe niż przetwarza CPU).
- Zidentyfikować konieczność przeniesienia plików / logów na inny dysk lub zastosowania RAID / NVMe lub przyspieszenie warstwy storage.
3. Kombinacja htop + iostat — jak korzystać razem
Połączenie wyników z htop i iostat pozwala lepiej diagnozować problemy wydajności:
- Użyj htop, aby zobaczyć, czy obciążenie pochodzi z procesora lub pamięci, lub czy prowadzi do IO-wait.
- Sprawdź w htop kolumnę „wa” (CPU wait) — jeśli widzisz wzrost „wa”, to wskazówka I/O bound.
- Następnie uruchom
iostat -xrównolegle, by sprawdzić, które urządzenia są przeciążone (wysokie%util, wysoki „await”). - Na serwerze produkcyjnym można uruchomić oba narzędzia jednocześnie w różnych terminalach lub skryptach loggerów, by śledzić zmienność w czasie (np. zapisywać logi co minutę).
4. Automatyzacja monitoringu i alerty 🛎️
Aby nie ciągle patrzeć ręcznie na htop/iostat, można:
- Zapisać wyjście
iostatw log (cronlub systemd timer), np. co minutę, w pliku tekstowym, a potem analizować skryptyem (grep, awk). - Używać prostych skryptów bash — np.:
#!/bin/bash
iostat -x 1 1 | grep -E "/dev/sda|Device" >> /var/log/iostat-monitor.log
i uruchamiać je przez cron:
* * * * * /usr/local/bin/iostat-monitor.sh
- Możesz też zebrać dane z htop przy pomocy
htop --delay …lub innych narzędzi wspierających zrzuty ekranów terminalowych — choć htop jest głównie interaktywny. - Dla długoterminowego monitoringu rozważ użycie narzędzi takich jak
collectd,Munin,Zabbixlub systemy observability — netbe.pl ma artykuł o narzędziach diagnostycznych i monitorowaniu systemu Linux.
5. Najlepsze praktyki
Kilka wskazówek, które warto wziąć pod uwagę przy analizie wydajności:
- Monitoruj zarówno CPU, pamięć, jak i I/O — ignorowanie jednej kategorii może prowadzić do błędnych diagnoz.
- Uwzględniaj obciążenie wielordzeniowych CPU — load average vs liczba rdzeni.
- Sprawdzaj okresy szczytowe (peak loads), nie tylko średnią.
- Ustal progi alertów dla I/O (np, gdy
%util> 80%), „await” powyżej określonej wartości. - Nie zapomnij o wpływie swapu i pamięci Cache / Buffers.
- Uruchamiaj testy w warunkach maksymalnego obciążenia (np. test kopiowania dużych plików, backup, intensywne zapisy) i obserwuj I/O wait / czas odpowiedzi usług.
Podsumowanie
Narzędzia htop i iostat są fundamentalnymi pomocnikami administratora Linuxa, służącymi do bieżącej analizy wydajności i diagnozy problemów. Kombinując je efektywnie i automatyzując zbieranie danych, można wcześnie wykrywać przeciążenia, reagować i poprawiać konfigurację sprzętu lub aplikacji.
Jeśli chcesz, mogę przygotować wersję rozszerzoną artykułu (z meta-title / meta-description / sekcjami H2-H3) gotową do publikacji na netbe.pl — lub zasugerować grafikę (zrzuty ekranu htop / iostat).






