Ответ
Для оценки загрузки CPU я смотрю на несколько аспектов: общую утилизацию, нагрузку (load average) и распределение по процессам.
1. Быстрый интерактивный просмотр:
top # Классический инструмент. Смотрю на строки 'Cpu(s)' и 'Load average'
htop # Более удобная альтернатива с цветным выводом и вертикальным/горизонтальным скроллингом
2. Получение снимка состояния или статистики:
# Статистика по всем CPU/ядрам
mpstat -P ALL 1 3 # Каждую секунду, 3 раза
# Краткий обзор (us - user, sy - system, id - idle, wa - I/O wait)
vmstat 1 5
3. Анализ нагрузки (Load Average):
Load Average (показывается в top или uptime) — это среднее количество процессов в состояниях "R" (запущены) и "D" (ожидают дискового I/O) за 1, 5 и 15 минут.
uptime
# Пример вывода: 12:00:00 up 10 days, load average: 0.50, 1.20, 1.05
Правило для начала беспокойства: если Load Average постоянно превышает количество CPU-ядер.
4. DevOps-практика: В продакшене я не полагаюсь на ручные команды. Я настраиваю Prometheus с node_exporter, который собирает метрики node_cpu_seconds_total (разбитые по режимам: user, system, idle, iowait и т.д.). В Grafana строю дашборды, показывающие утилизацию, I/O wait и нагрузку. Для контейнеризированных сред также смотрю container_cpu_usage_seconds_total из cAdvisor.