mpstat

Raportuje wykorzystanie poszczególnych rdzeni procesora.

mpstat to narzędzie z pakietu sysstat, które pokazuje wykorzystanie procesora z rozbiciem na poszczególne rdzenie. Zamiast jednej uśrednionej liczby (jak w uptime) dostajesz tabelę: ile czasu każdy rdzeń spędza w trybie użytkownika, systemowym, w oczekiwaniu na dysk (iowait) czy na obsłudze przerwań. To pierwsze narzędzie po które sięgasz, gdy serwer „się dławi”, a chcesz wiedzieć, czy obciążenie rozkłada się równo, czy jeden rdzeń haruje, a reszta się nudzi.

Składnia i najważniejsze opcje

Podstawowa składnia: mpstat [opcje] [interwał [liczba]]

  • -P { lista | ALL } — wybór rdzeni; -P ALL pokazuje każdy rdzeń osobno (np. -P 0,2 tylko rdzeń 0 i 2).
  • -u — raport wykorzystania CPU (tryb domyślny, kolumny %usr, %sys, %iowait, %idle).
  • -I { SUM | CPU | SCPU | ALL } — statystyki przerwań na sekundę, z podziałem na rdzenie.
  • -N { lista | ALL } — statystyki w rozbiciu na węzły NUMA.
  • -A — wszystko naraz, równoważne -n -u -I ALL oraz -N ALL -P ALL.
  • -o JSON — wynik w formacie JSON (wygodne do skryptów i parsowania).
  • -V — wersja narzędzia.

Przykłady użycia

  • mpstat — jednorazowy, uśredniony raport dla wszystkich CPU od startu systemu. Szybki rzut oka.
  • mpstat -P ALL 2 5 — co 2 sekundy, 5 razy, osobno dla każdego rdzenia. Klasyk do łapania nierównomiernego obciążenia.
  • mpstat -P ALL 1 — odświeżanie co sekundę bez końca (przerywasz Ctrl+C). Dobre do obserwacji na żywo podczas testu.
  • mpstat -I CPU 1 3 — pokazuje, ile przerwań na sekundę dostaje każdy rdzeń; przydatne przy podejrzeniu, że karta sieciowa „bombarduje” jeden CPU.
  • mpstat -P ALL -o JSON 1 3 — ten sam pomiar, ale w JSON-ie do dalszej obróbki w skrypcie.

Częste błędy i pułapki

Brak komendy? Na czystym systemie mpstat nie jest zainstalowany — doinstaluj pakiet sysstat (Debian/Ubuntu: apt install sysstat, RHEL/Fedora: dnf install sysstat).

Pierwszy pomiar kłamie. Wywołanie bez interwału pokazuje średnią od bootu, a nie stan „teraz”. Jeśli chcesz aktualne dane, podaj interwał (np. mpstat 2 3) i patrz na kolejne odczyty, nie na pierwszy.

To głównie Linux. mpstat czyta z /proc, więc na macOS czy BSD go nie znajdziesz — tam masz top albo iostat.

Wysoki %iowait to nie problem CPU. Procesor czeka na dysk lub sieć, nie liczy — szukaj winowajcy w I/O, nie w obciążeniu rdzeni.

Powiązane komendy: top, htop, vmstat, iostat, pidstat, sar.