Load average

Uśredniona w czasie liczba procesów rywalizujących o procesor lub czekających na operacje wejścia/wyjścia. Podawana zwykle dla 1, 5 i 15 minut.

Load average to uśredniona w czasie liczba procesów, które albo właśnie korzystają z procesora, albo czekają w kolejce na jego czas, albo wiszą w nieprzerywalnym śnie (stan D) na zakończenie operacji wejścia/wyjścia. System podaje ją zwykle w trzech wartościach: dla ostatniej 1, 5 i 15 minut. Dzięki temu jednym rzutem oka widzisz, czy obciążenie rośnie, czy opada.

Kluczowa rzecz, która myli początkujących: na Linuksie load average to nie jest procent zużycia CPU. To liczba „rywali” o zasoby. Jeśli masz maszynę z jednym rdzeniem, to load 1.00 oznacza, że procesor jest zajęty w 100%, ale bez kolejki. Load 2.00 na tym samym jednordzeniowcu znaczy, że tyle samo pracy znów czeka. Na maszynie z 4 rdzeniami load 4.00 to dopiero pełne, ale zdrowe obciążenie. Stąd prosta reguła: dziel load przez liczbę rdzeni (nproc), żeby wiedzieć, czy jest spokojnie.

Gdzie to zobaczysz w praktyce

Najszybciej rzucisz okiem komendą uptime albo top (czy ładniejszym htop). Surowe dane siedzą w /proc/loadavg:

$ uptime zwróci coś w stylu load average: 0.42, 0.85, 1.10. Czytasz to tak: w ostatniej minucie było luźno (0.42), ale patrząc na 15 minut (1.10) widać, że niedawno coś maszynę przyciskało i właśnie się uspokaja. Gdyby kolejność była odwrotna — 2.50, 1.20, 0.60 — to znak, że obciążenie dopiero narasta i warto sprawdzić, co je generuje (np. top sortowany po CPU albo iostat, jeśli winne jest I/O).

Częste pułapki i mity

  • Wysoki load nie zawsze znaczy zajęty procesor. Na Linuksie procesy w stanie D (czekające na wolny dysk lub zawieszony NFS) też podbijają load, choć CPU może się nudzić. Wtedy szukaj winowajcy w I/O, nie w obliczeniach.
  • Jedna liczba nic nie mówi bez kontekstu rdzeni. Load 8.0 to katastrofa na laptopie z 2 rdzeniami, a relaks na serwerze z 32.
  • To nie jest „CPU%”. Inne systemy (np. macOS, klasyczny Unix) liczą load nieco inaczej niż Linux, więc nie porównuj wartości między platformami jeden do jednego.

W skrócie: load average daje Ci trend, a nie diagnozę. Mówi „coś się dzieje”, a dopiero top, htop, iostat czy vmstat powiedzą co.

Pojęcia powiązane: run queue, stan procesu D (uninterruptible sleep), CPU utilization, kontekst przełączania (context switch), nproc, iowait, /proc/loadavg.