Как оценить загрузку процессора в Linux

«Как оценить загрузку процессора в Linux» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для оценки загрузки 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.