open atlas
↑ К треку
Командная строка CLI · 07 · 04

Мониторинг ресурсов

top и htop дают реальные данные по CPU и памяти на процесс. Средняя нагрузка показывает, сколько процессов конкурируют за CPU, усреднённых за 1, 5 и 15 минут. free показывает использование RAM и swap в одну строку. Вместе эти три инструмента отвечают: машина сейчас здорова?

CLI Middle ◷ 22 min
Уровень
ОсновыJuniorMiddleSenior

Сервер, работающий на 100% CPU 30 секунд, может быть в порядке — короткий пакетный job. Тот же сервер на 100% 30 минут — кризис. Средняя нагрузка за 15 минут выше числа ядер означает очередь ожидающих процессов. Память на 95% при нулевом использовании swap — скорее всего нормально; память на 95% с активным swap — главный признак надвигающегося OOM kill. Правильно читать эти числа — не просто видеть их — вот разница между спокойным дежурством и паникой в 3 ночи.

Цель

После этого урока ты сможешь интерпретировать вывод top и htop для CPU и памяти по процессу, читать среднюю нагрузку и объяснять, что означают числа выше числа ядер, использовать free -h для оценки давления памяти и swap, и использовать uptime для быстрой проверки здоровья системы.

1

top — классический монитор процессов в реальном времени. Обновляется каждые 3 секунды (настраивается). Заголовок показывает общесистемную статистику; таблица процессов ниже по умолчанию отсортирована по %CPU.

top - 10:42:17 up 2 days, 14:03,  2 users,  load average: 1.23, 0.87, 0.64
Tasks: 182 total,   2 running, 180 sleeping,   0 stopped,   0 zombie
%Cpu(s):  8.3 us,  1.2 sy,  0.0 ni, 89.1 id,  1.0 wa,  0.0 hi,  0.4 si
MiB Mem :   7822.4 total,    412.1 free,   5631.3 used,   1779.0 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   1823.1 avail Mem

Ключевые поля CPU в строке %Cpu:

  • us — время CPU в пространстве пользователя (код твоего приложения)
  • sy — время CPU ядра/системы (системные вызовы, обработка I/O)
  • id — процент простоя (100 - id = общая утилизация)
  • wa — ожидание I/O — CPU простаивает в ожидании диска или сети; высокий wa = узкое место I/O, а не CPU

Интерактивные команды внутри top: q выйти, k убить (запрашивает PID + сигнал), M сортировать по памяти, P по CPU, 1 переключить вид по ядрам.

2

Средняя нагрузка: три числа, одна концепция. Три значения из uptime или заголовка top — среднее количество процессов в очереди выполнения (выполняющихся или ожидающих CPU) за последние 1, 5 и 15 минут.

uptime
# 10:42:17 up 2 days, load average: 1.23, 0.87, 0.64

Правило большого пальца: сравни нагрузку с числом CPU (nproc или /proc/cpuinfo). На 4-ядерной машине:

  • Нагрузка 2.0 → в среднем 50% мощности CPU. Нормально.
  • Нагрузка 4.0 → 100% утилизации. Каждый новый job ждёт.
  • Нагрузка 8.0 → 200% — в среднем очередь из 4 процессов. Что-то не так.

Тренд важнее мгновенного снимка. Нагрузка 6.0, 3.0, 1.5 снижается — всплеск только что закончился. Нагрузка 1.5, 3.0, 6.0 растёт — расследуй сейчас. Нагрузка включает процессы в состоянии непрерываемого ожидания I/O (состояние D), поэтому очень высокая нагрузка при низком %CPU обычно означает узкое место I/O.

3

free -h показывает RAM и swap в удобочитаемых единицах.

free -h
#               total        used        free      shared  buff/cache   available
# Mem:           7.6G        5.5G        402M        312M       1.7G       1.8G
# Swap:          2.0G          0B        2.0G

Важный столбец — available, а не free. Linux агрессивно использует свободную RAM как кэш страниц (buff/cache). Эта память мгновенно освобождается при необходимости — она не «занята» в каком-либо значимом смысле. available = free + освобождаемый кэш = что реально может получить новый процесс.

Swap: swap used > 0 означает, что ядро начало вытеснять холодные страницы на диск. Небольшое количество нормально. Активное использование swap (следи за столбцами si/so в vmstat 1) вызывает видимые задержки. Полностью занятый swap с активностью — последнее предупреждение перед началом OOM kills.

free -h          # удобочитаемые единицы
free -s 2        # обновление каждые 2 секунды
vmstat 1         # вид по секундам: si/so = страницы swap in/out
4

htop — более удобный top с поддержкой мыши и цветом. Не установлен по умолчанию, но доступен в менеджерах пакетов всех основных дистрибутивов.

sudo apt install htop    # Debian/Ubuntu
sudo dnf install htop    # RHEL/Fedora
htop

Ключевые преимущества перед top:

  • Цветные полосы CPU на каждое ядро (сразу видно, если одно ядро перегружено, а остальные простаивают)
  • Прокручиваемый список процессов — без обрезки
  • F6 для интерактивной сортировки по любому столбцу
  • F9 для отправки сигнала через меню (не нужно вводить номер)
  • F5 вид дерева — показывает отношения родитель-потомок встроенно
  • Фильтр по имени пользователя или процесса с \

Для повседневного мониторинга на серверах, где контролируешь среду, установи htop. Для диагностики на незнакомых машинах top всегда доступен.

5

Быстрые однострочники проверки здоровья. При подключении к машине по SSH для 10-секундного триажа:

uptime                        # тренд средней нагрузки
free -h                       # память и swap
ps aux --sort=-%cpu | head    # топ потребителей CPU
ps aux --sort=-%mem | head    # топ потребителей памяти
df -h                         # использование диска (часто забывают, пока не заполнится)

Объедини в переиспользуемый алиас:

alias health='uptime && free -h && df -h'

Для устойчивого мониторинга перенаправь top -b -n 5 (пакетный режим, 5 итераций) в файл для снимка с временной меткой, который можно отправить или сравнить.

Разбор примера

Диагностировать медленный сервер менее чем за 2 минуты.

# 1. Высокая ли нагрузка? Растёт или падает?
uptime
# load average: 7.81, 4.32, 2.11  ← растёт на 4-ядерной машине. Плохо.

# 2. Ограничен ли CPU или I/O?
top -bn1 | head -5
# %Cpu: 12.3 us, 3.1 sy, 0.0 ni, 21.4 id, 62.8 wa
# 62.8% wa → ожидание I/O. Не CPU.

# 3. Какой процесс выполняет I/O?
ps aux --sort=-%cpu | head -5
# CPU низкий... но нагрузка высокая из-за процессов в состоянии D.

# 4. Найти процессы в состоянии D
ps aux | awk '$8 ~ /^D/ {print}'
# postgres  4219 0.1  2.3 ... D  ... postgres: checkpointer
# Дисковый I/O от checkpointer postgres блокирует очередь выполнения.

# 5. Проверить диск
df -h /var/lib/postgresql
# 97% заполнен — операции записи зависают, потому что файловая система почти полна.

Первопричина: диск почти полон → записи зависают → checkpointer postgres блокируется в состоянии D → средняя нагрузка растёт, хотя %CPU низкий. Исправление: освободить место на диске.

Почему это работает

На macOS вывод top значительно отличается — столбцы имеют другие названия и порядок. htop доступен через Homebrew. Средняя нагрузка на macOS включает спящие процессы, не конкурирующие за CPU, что может делать числа выше, чем эквиваленты Linux. Команда free на macOS отсутствует; используй vm_stat или Activity Monitor. Для продакшн Linux-систем инструменты из этого урока работают одинаково во всех основных дистрибутивах.

Частая ошибка

Использовать столбец free из вывода free для оценки давления памяти — самое распространённое неправильное прочтение. На здоровой Linux-системе свободная RAM почти нулевая, потому что ядро заполняет свободную память кэшем страниц. «Мало free» при высоком available — нормально. «Мало available» при активном swap (si/so > 0 в vmstat) — настоящий сигнал тревоги. Никогда не поднимай тревогу только из-за низкой свободной памяти.

Проверь себя
Викторина

4-ядерный сервер показывает load average: 6.5, 5.2, 3.1 и top показывает %Cpu: 15us, 5sy, 78id, 2wa. Что является наиболее вероятным объяснением?

Итог

top обновляет системную статистику и статистику по процессам в реальном времени; сортировка по памяти — M, вид по ядрам — 1. Средняя нагрузка (из uptime или заголовка top) считает среднюю глубину очереди выполнения за 1/5/15 минут — сравнивай с nproc; растущая нагрузка выше числа ядер требует расследования. free -h: следи за столбцом available, а не free; активный swap (vmstat si/so > 0) — настоящий сигнал давления. htop добавляет цвет, мышь и вид дерева — устанавли на серверах, которые контролируешь. Для быстрого триажа: uptime, free -h, ps aux --sort=-%cpu | head.

Практика

Начни сверху. Задачи идут от простого к сложному: вспомнить факт, применить к случаю, затем senior-уровень. Открой, попробуй, потом открой ответ.

вспомнитьприменитьуглубить0 из 4 завершено

Что-то непонятно?

Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.

хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.