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

Какие знаешь показатели использования CPU в top в Linux?

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

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

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

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

Показатели использования CPU в top в Linux

Команда top — один из основных инструментов мониторинга системы в Linux, предоставляющий динамическое представление о нагрузке на процессор. Понимание её показателей критически важно для диагностики производительности. Вот ключевые метрики, связанные с CPU:

Основные строки сводки CPU в top

В верхней части вывода top находится строка (или несколько строк в многоядерных системах), показывающая общую статистику по CPU. Обычно она выглядит так:

%Cpu(s):  5.3 us,  1.2 sy,  0.0 ni, 93.2 id,  0.1 wa,  0.0 hi,  0.0 si,  0.2 st

Разберём каждый показатель:

  • us (user): Процент времени CPU, затраченного на выполнение процессов в пользовательском пространстве. Это время работы приложений, не требующих привилегий ядра. Высокий us часто указывает на активную работу приложений (веб-сервер, база данных, пользовательские программы).
  • sy (system): Процент времени CPU, затраченного на выполнение процессов в пространстве ядра. Это время на системные вызовы, обслуживание прерываний, управление памятью и т.д. Значительный sy может сигнализировать о большом количестве системных вызовов или проблемах с драйверами.
  • ni (nice): Процент времени CPU, затраченного на выполнение процессов с изменённым приоритетом (nice value). Это подмножество пользовательского времени (us).
  • id (idle): Процент времени простоя CPU. Чем выше это значение, тем меньше загружена система. Низкий id (менее 10-20%) в течение длительного времени указывает на высокую нагрузку.
  • wa (I/O wait): Процент времени, в течение которого CPU простаивал в ожидании завершения операций ввода-вывода (диск, сеть). Это один из самых важных индикаторов проблем с производительностью подсистемы хранения или сети. Высокий wa (>5-10%) часто означает, что диск не справляется с нагрузкой.
  • hi (hardware interrupts): Процент времени, затраченного на обработку аппаратных прерываний (от устройств: сетевые карты, дисковые контроллеры и т.д.).
  • si (software interrupts): Процент времени, затраченного на обработку программных прерываний (softirqs). Часто связано с сетевым стеком ядра (например, обработка сетевых пакетов).
  • st (steal time): Актуально для виртуальных машин. Это процент времени, которое виртуальная CPU не могла выполнять работу, потому что гипервизор обслуживал другие виртуальные машины. Высокий st указывает на нехватку физических ресурсов на хостинге.

Показатели в таблице процессов

В основной таблице top для каждого процесса также отображаются ключевые метрики CPU:

  • %CPU: Общее использование процессорного времени данным процессом за последний измеренный интервал. Если в системе несколько ядер, значение может превышать 100% (например, 250% на 4-ядерной системе означает, что процесс использует 2.5 ядра).
  • TIME+: Общее процессорное время (в сотых долях секунды), затраченное процессом с момента его запуска. Полезно для выявления процессов, которые потребляют много CPU в долгосрочной перспективе.
  • PR (Priority) и NI (Nice Value): Косвенно влияют на использование CPU, определяя приоритет планировщика. Процессы с низким значением nice (отрицательным) получают больше CPU времени.

Практический анализ и примеры

Интерпретация показателей всегда должна быть комплексной.

Сценарий 1: Высокая нагрузка на CPU приложением.

%Cpu(s): 85.0 us,  5.0 sy,  0.0 ni,  9.8 id,  0.1 wa,  0.0 hi,  0.0 si,  0.1 st
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 4567 appuser   20   0   12.3g   1.2g   3.8m R  450.1  7.8  10:30.15 java

Здесь доминирует us, а процесс java потребляет ~450% CPU (т.е. ~4.5 ядра). Это указывает на активную работу приложения. Далее нужна профилировка кода (с помощью jstack, perf, async-profiler).

Сценарий 2: Проблемы с вводом-выводом.

%Cpu(s):  5.3 us, 15.2 sy,  0.0 ni, 10.5 id, 68.9 wa,  0.0 hi,  0.1 si,  0.0 st

Критически высокий wa означает, что CPU большую часть времени ждёт диск. Необходимо проверить утилизацию диска (iotop, iostat):

iostat -x 2

Обратить внимание на %util и await.

Сценарий 3: Активность ядра.

%Cpu(s): 10.3 us, 40.2 sy,  0.0 ni, 49.2 id,  0.1 wa,  0.0 hi,  0.2 si,  0.0 st

Высокий sy может быть вызван множеством контекстных переключений, частыми системными вызовами (например, от файлового брокера) или сетевой активностью. Проверить можно так:

# Проверка контекстных переключений
vmstat 1
# или
pidstat -w 1

# Поиск процессов с большим количеством системных вызовов
pidstat -t 1 | head -20
# или использование strace для подозрительного PID
strace -c -p <PID>

Важные замечания

  • Показатели в top по умолчанию обновляются с интервалом в 3 секунды. Интервал можно изменить клавишей d.
  • Для анализа в реальном времени и сбора истории лучше использовать более продвинутые инструменты: htop (более наглядный), atop (ведёт детальный лог), vmstat, mpstat (для разбивки по ядрам), и системы мониторинга типа Prometheus/Grafana с Node Exporter.
  • В современных версиях top можно нажать 1, чтобы увидеть загрузку по каждому ядру/потоку отдельно, что помогает выявить неравномерную нагрузку.
  • Показатель st (steal time) — ключевой индикатор для облачных и виртуальных сред. Его постоянное высокое значение (>10%) — веская причина для обращения к провайдеру VPS или пересмотра размера виртуальной машины.

Таким образом, грамотное чтение показателей CPU в top позволяет быстро определить природу проблемы (пользовательское приложение, ядро, I/O, виртуализация) и выбрать правильный вектор для углублённой диагностики.