← Назад к вопросам

Почему каждый показатель нагрузки измеряется в процентах в Linux?

1.8 Middle🔥 152 комментариев
#Linux и администрирование#Мониторинг и логирование

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Почему метрики нагрузки в Linux измеряются в процентах?

Прежде всего, важно внести ясность: в Linux классические показатели нагрузки (load average), которые выводятся командами uptime или top, НЕ измеряются в процентах. Они представляют собой средние числа (за 1, 5 и 15 минут), которые отражают количество процессов в состоянии "готов к выполнению" (в очереди runqueue) или в состоянии "непрерываемого сна" (обычно ожидающих завершения операций ввода-вывода). Например, значение 1.23 на одноядерной системе означает, что в среднем 1.23 процесса было готово к выполнению или ожидало ресурсов.

Однако ваш вопрос, вероятно, относится к утилизации процессора (CPU utilization), которая действительно часто выражается в процентах. Давайте рассмотрим оба компонента.

1. Показатели нагрузки (Load Average) — это не проценты

Load average — это усредненный показатель длины очереди выполнения. Это абстрактное число, а не процент. Его интерпретация зависит от количества ядер CPU:

  • Значение < 1.0 на одно ядро: система в среднем не перегружена, процессор иногда простаивает.
  • Значение > 1.0 на одно ядро: в среднем есть процессы, ожидающие своей очереди на выполнение.
  • На многоядерной системе нагрузку нужно соотносить с числом ядер. Например, значение 4.0 на 4-ядерном CPU означает, что все ядра в среднем были заняты, но очереди не было.
# Пример вывода uptime
$ uptime
 14:32:45 up 10 days,  2:15,  1 user,  load average: 0.08, 0.03, 0.01
# Здесь 0.08, 0.03, 0.01 - это load average за 1, 5 и 15 минут соответственно.

Это число не ограничено сверху 100% и может расти очень высоко при перегрузке системы, что хорошо визуализирует глубину проблемы.

2. Утилизация CPU — измеряется в процентах

Вот здесь мы говорим о процентах. Процент утилизации CPU (CPU usage) — это фундаментальная и интуитивно понятная метрика, показывающая, какую долю времени процессор(ы) был занят выполнением рабочих задач (user space) и задач ядра (system space) за определенный интервал.

Причины использования процентов для метрик утилизации (CPU, памяти, диска, сети):

  1. Универсальность и простота восприятия. Процент — это естественная и широко понятная единица измерения "доли от целого". 0% — полный простой, 100% — полная занятость ресурса. Это позволяет быстро оценить состояние системы и сравнить разные системы или периоды времени.

  2. Нормализация значений независимо от аппаратных характеристик. Процент позволяет абстрагироваться от абсолютной мощности системы. Нагрузка 50% на слабом виртуальном ядре и на мощном физическом процессоре технически означает одно и то же: ресурс используется наполовину. Это критически важно для мониторинга гетерогенных сред.

  3. Прямая связь с квантованием времени (time slicing). Работа CPU в многозадачных системах основана на распределении временных интервалов (квантов) между процессами. Процент утилизации — это прямое отражение статистики этого распределения: сколько квантов процессорного времени было потрачено на полезную работу, а сколько на idle.

  4. Удобство для агрегации и алертинга. Для систем мониторинга (Prometheus, Grafana, Zabbix) проценты — удобный формат для установки пороговых значений (например, алерт при утилизации CPU > 80% в течение 5 минут). Средние значения по кластерам тоже вычисляются интуитивно.

# Пример вывода утилизации CPU из утилиты mpstat
$ mpstat 1 1
Linux 5.4.0...    04.10.2023      _x86_64_        (4 CPU)

14:35:03     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
14:35:04     all   12.50    0.00    2.50    0.75    0.00    0.25    0.00    0.00    0.00   84.00
# Здесь каждая категория (пользовательские процессы, система, ожидание ввода-вывода, простой) выражена в процентах от общего времени CPU.

Сравнительная сводка

ХарактеристикаLoad AverageCPU Utilization (%)
Что измеряетДлину очереди процессов, готовых к выполнению или ожидающих I/O.Долю времени, которую CPU провел в работе, а не в простое.
Единица измеренияАбстрактное усредненное число (с плавающей точкой).Процент (%) от общего процессорного времени.
Связь с ядрамиКритически важна: значение интерпретируется относительно числа CPU-ядер.При агрегации на весь сервер может превышать 100% (например, 400% на 4 ядрах).
Пример4.67 (может быть любым неотрицательным числом).78.5% (ограничено сверху 100% * число_ядер).
Когда использоватьДля понимания уровня насыщения системы и наличия очереди на выполнение.Для понимания занятости самих вычислительных ресурсов.

Вывод: В Linux используются две ключевые и взаимодополняющие метрики. Load average (не в процентах) показывает степень насыщения системы — есть ли очередь на обработку. Утилизация CPU (в процентах) показывает степень использования самих вычислительных ядер. Обе необходимы для полноценного анализа производительности. Например, высокая утилизация CPU (90-100%) при низком load average (< число_ядер) говорит об эффективной работе без простоя и очередей. А высокий load average при умеренной утилизации CPU может указывать на проблемы с вводом-выводом (iowait), когда процессы заблокированы, а процессор недогружен.