Ответ
В Linux ключевые метрики CPU можно разделить на несколько категорий, которые я регулярно анализирую через различные инструменты.
Основные метрики из /proc/stat и утилит (например, mpstat):
- %user: Процент времени, потраченного на выполнение пользовательских процессов.
- %system: Процент времени, потраченного на выполнение процессов ядра.
- %idle: Процент времени, когда CPU простаивал.
- %iowait: Процент времени, когда CPU простаивал в ожидании завершения операций ввода-вывода. Высокий показатель часто указывает на проблемы с диском.
- %steal: Актуально для виртуальных машин. Процент времени, которое гипервизор "отобрал" у данной VM для обслуживания других VM.
- %nice: Процент времени, потраченного на выполнение пользовательских процессов с изменённым (низким) приоритетом (nice).
Практический мониторинг:
-
mpstatдля детального анализа по ядрам:# Вывод статистики каждую секунду, 5 раз mpstat -P ALL 1 5Это помогает выявить неравномерную нагрузку на ядра.
-
top/htopдля оперативного анализа:- Load Average (средняя нагрузка): Показывает среднее количество процессов в состоянии "выполняемы" или "ожидают ввода-вывода" за 1, 5 и 15 минут. Значение, превышающее количество ядер CPU, указывает на очередь.
- %CPU по процессам: Позволяет идентифицировать процессы-пожиратели ресурсов.
-
Долгосрочный сбор данных с
sar:# Просмотр исторических данных о CPU (например, за 10:00 утра) sar -u -s 10:00:00Это незаменимо для анализа трендов и выявления периодических пиков нагрузки.
Контекст для DevOps: Эти метрики я интегрирую в системы мониторинга (Prometheus через node_exporter, Datadog) для настройки алертов. Например, алерт срабатывает при %iowait > 20% в течение 5 минут или при Load Average (5 min) > (количество ядер * 2).