Когда сервер тормозит, первый инстинкт — открыть
top или htop. Но они показывают общую картину. Если нужно понять, как нагрузка распределяется по ядрам, какой процент времени CPU тратит в режиме ожидания ввода-вывода и где именно зарыта проблема — нужен mpstat.Что такое mpstat
mpstat входит в пакет sysstat и выводит статистику использования процессора: по каждому ядру отдельно или суммарно. В отличие от top, он не интерактивный — удобно логировать вывод или использовать в скриптах.Основные флаги
Запуск без аргументов покажет среднюю статистику с момента старта системы — не очень полезно. Обычно используют так:
mpstat -P ALL 2 5
-P ALL — показать все ядра 2 — интервал в секундах 5 — количество итерацийПример вывода:
Linux 5.15.0 (srv01) 05/18/2026 _x86_64_ (4 CPU)
14:32:01 CPU %usr %nice %sys %iowait %irq %soft %steal %idle
14:32:03 all 12.3 0.0 3.1 8.4 0.0 0.1 0.0 76.1
14:32:03 0 45.2 0.0 5.3 2.1 0.0 0.2 0.0 47.2
14:32:03 1 3.1 0.0 1.2 18.3 0.0 0.0 0.0 77.4
14:32:03 2 2.4 0.0 2.8 9.2 0.0 0.1 0.0 85.5
14:32:03 3 0.8 0.0 3.2 4.1 0.0 0.0 0.0 91.9
На что смотреть
%usr — время в пространстве пользователя. Высокое значение говорит о нагруженном приложении.%sys — время в режиме ядра. Если оно неожиданно высокое, стоит проверить системные вызовы.%iowait — CPU ждёт завершения операций ввода-вывода. Значение выше 10–15% — сигнал проблем с диском или сетью.%steal — время, украденное гипервизором на виртуалках. Если стабильно выше 5% — ресурсов на хосте не хватает.%idle — простой. Чем меньше, тем выше нагрузка.В примере выше видно, что нулевое ядро загружено на 45%, а
%iowait на первом ядре — 18%. Это повод разобраться, какой процесс привязан к этим ядрам и почему он так активно работает с диском.Смотрим только iowait
Если нужно быстро отследить проблемы с вводом-выводом:
mpstat -P ALL 1 | awk '/[0-9]/ {print $1, $2, $6}'Выведет только время, номер ядра и
%iowait.Логирование
sysstat умеет собирать статистику в фоне через sar. Но если нужно просто сохранить данные в файл на время инцидента:mpstat -P ALL 2 30 > /tmp/cpu_$(date +%F_%T).log
Запустит 30 итераций с интервалом 2 секунды и сохранит в файл с меткой времени.
mpstat полезен, когда нужно быстро понять распределение нагрузки по ядрам или найти аномалии — высокий %iowait, перекос нагрузки на одно ядро, активность гипервизора.📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженера