# Load average _Процессы и ресурсы · LinuxLab Knowledge Base_ **TL;DR:** Три числа в `uptime` - экспоненциальные средние длины очереди процессов (R + D state) за 1, 5 и 15 минут. Имеет смысл только в контексте `nproc`. ## Что показывает load average Команда `uptime` (и хедер `top`) выдаёт три числа: ``` load average: 0.45, 0.30, 0.18 ``` Это **экспоненциально-взвешенные средние длины очереди** процессов которые на момент сэмплинга находились в состоянии R или D (см. [process-and-pid](/kb/process-and-pid.md)). Усреднение - за последние 1, 5 и 15 минут соответственно. Само значение не нормировано на количество CPU. На машине с 1 ядром LA=1.0 означает «одно ядро занято 100%». На машине с 8 ядрами та же LA=1.0 это «одно из восьми занято». Смотри в контексте: `LA / nproc < 1.0` - недогруз, `~1.0` - предел, `>>1.0` - кто-то в очереди (CPU-bound или I/O-bound - см. ниже). ## Где данные - `cat /proc/loadavg` - четыре поля: `1m 5m 15m running/total last_pid` - `uptime` - то же красивее - `top` / `htop` - обновляется в реальном времени Важно: `procs_running` в `/proc/stat` - **мгновенный** счётчик процессов готовых к выполнению. В отличие от LA-1m он не сглажен и реагирует моментально - полезно для дебага. ## R vs D - почему высокий LA не всегда CPU-проблема Процессы в очереди LA это **сумма** двух типов: - **R (Running/Runnable)** - хочет CPU - **D (Uninterruptible Sleep)** - застрял на I/O в ядре, ждёт диск/NFS/dm Сценарии при LA=8 на 4-CPU машине: - 8 R, 0 D → CPU реально перегружен; нужно больше ядер или меньше работы - 0 R, 8 D → CPU простаивает, виноват **диск** (NFS пропал, БД залипла, md-rebuild). Никакой апгрейд CPU не поможет. Поэтому при ANY проблеме с LA первая команда - `ps -eo state,pid,cmd | awk '$1 ~ /^[RD]/'`. ## В контейнерах Контейнер делит ядро с хостом, и `/proc/loadavg` - **не контейнеризован**. Внутри Docker-контейнера ты видишь LA всей host-VM, не своего контейнера. Для per-container CPU-pressure используй PSI (Pressure Stall Information) из [cgroups](/kb/cgroups.md) v2. ## Команды ```bash uptime ``` Аптайм + LA-1m, LA-5m, LA-15m ```bash cat /proc/loadavg ``` Сырые значения + procs_running/procs_total + last_pid ```bash awk -v cores=$(nproc) '{printf "%.2f\n", $1/cores}' /proc/loadavg ``` Нормализованный LA-1m (значение < 1 = есть запас) ```bash ps -eo state,pid,cmd | awk '$1 ~ /^[RD]/' ``` Только процессы в R или D state - те что реально влияют на LA ```bash cat /sys/fs/cgroup/cpu.pressure ``` PSI в cgroups v2 - CPU pressure для текущего контейнера/cgroup'а; точнее LA ## См. также - [Процесс и PID](/kb/process-and-pid.md) - [htop - интерактивный монитор процессов](/kb/cmd-htop.md) - [ps - снимок процессов](/kb/cmd-ps.md) - [cgroups (v2)](/kb/cgroups.md) - [OOM killer](/kb/oom-killer.md)