Разбор вывода утилиты top
Приветствую!

В этой теоретической заметке подробно рассмотрим вывод команды top - утилиты для базовой диагностики Linux.

top - это утилита-менеджер процессов для командной строки Linux, которая предоставляет динамическое, в реальном времени, представление запущенных процессов и системных ресурсов (CPU, память).

Каждому продвинутому пользователю Linux настоятельно рекомендуется знать про top, уметь с ним работать и интерпретировать его вывод.

Про показатели, отображаемые в выводе top очень часто спрашивают на IT собеседованиях☝️.

Для вызова менеджера процессов просто выполните:

BASH
top -c
Нажмите, чтобы развернуть и увидеть больше

Ниже подробный разбор вывода данной утилиты.

Строка 1 - Время запуска, пользователи и Load Average

BASH
top - 14:41:16 up 5:46, 1 user, load average: 0.86, 0.35, 0.13
Нажмите, чтобы развернуть и увидеть больше

Разбор показателей:

Строка 2 - Сводка задач (Tasks)

BASH
Tasks: 642 total, 1 running, 641 sleeping, 0 stopped, 0 zombie
Нажмите, чтобы развернуть и увидеть больше

Разбор показателей:

Строка 3 - Статистика CPU

BASH
%Cpu(s): 1.9 us, 2.5 sy, 0.0 ni, 95.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
Нажмите, чтобы развернуть и увидеть больше

Разбор показателей (процент времени):

Строка 4 - Память (Physical RAM)

BASH
MiB Mem: 48163.6 total, 44135.4 free, 2643.1 used, 1928.9 buff/cache
Нажмите, чтобы развернуть и увидеть больше

Разбор показателей:

Строка 5 - Память (swap)

BASH
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used
Нажмите, чтобы развернуть и увидеть больше

Пространство на диске, используемое для выгрузки неактивных страниц памяти из RAM.

Разбор показателей:

Строка 6 - Таблица процессов

BASH
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
Нажмите, чтобы развернуть и увидеть больше

Разбор столбцов:

  1. PID (Process ID) - уникальный идентификатор процесса;
  2. USER - эффективный идентификатор пользователя (EUID), от которого запущен процесс;
  3. PR (Priority) - динамический приоритет планировщика ядра (RT - Real Time);
  4. NI (Nice) - значение “уступчивости” (-20 - высший приоритет, +19 - низший). Влияет на PR;
  5. VIRT (Virtual Image) - виртуальный объем памяти, зарезервированный процессом (код + данные + разделяемые библиотеки + страницы в swap). Не показывает реальное потребление физической RAM;
  6. RES (Resident Size) - не выгруженная в swap физическая память, используемая процессом (code + data). Основной показатель потребления RAM;
  7. SHR (Shared Mem) - часть памяти RES, которая может быть разделена с другими процессами (библиотеки glibc и др.);
  8. TIME+ - суммарное время CPU, затраченное процессом с точностью до сотых секунды;
  9. COMMAND - команда запуска процесса.

Состояния процессов (Столбец S)

Это наиболее важный столбец для глубокой диагностики.

КодСтатус (State)Техническое описаниеИнтерпретация
RRunningRunning or RunnableПроцесс либо исполняется на ядре, либо находится в очереди планировщика (Run queue).
SSleepingInterruptible SleepОжидает события (завершения ввода, таймера, сигнала). Может быть прерван сигналом.
DDisk SleepUninterruptible SleepПроцесс ожидает ответа от оборудования (обычно I/O). Его невозможно убить (kill -9 не сработает), пока драйвер не вернет управление. Скопление D-процессов повышает Load Average.
ZZombieZombieПроцесс завершен (exit()), память освобождена, но запись в таблице процессов осталась, так как родитель не вызвал wait().
TStoppedStoppedОстановлен сигналом управления заданиями (SIGSTOP/SIGTSTP) или отладчиком (ptrace).
tTracingTracing stopОстановлен отладчиком во время трассировки.
IIdleIdle (Kernel thread)Поток ядра в режиме простоя (не учитывается в Load Average). Обычно процессы [kworker].

Полезные сочетания клавиш в интерактивном top

Полезная команда для вывода в скрипт/лог (non-interactive):

BASH
top -b -n 1 
Нажмите, чтобы развернуть и увидеть больше

Она фиксирует состояние всех процессов на момент выполнения.

Также существует популярные менеджеры htop - удобнее интерактивно, и atop, который способен сохранять историю показателей, но уже другая история😉.

Подробнее про управление процессами читайте в отдельной статье: 🔗 Командная строка Linux, процессы: команды jobs, fg, bg, ps, pgrep, kill, pkill, htop

Авторские права

Автор: Иван Чёрный

Ссылка: https://r4ven.me/monitoring/razbor-vyvoda-utility-top/

Лицензия: CC BY-NC-SA 4.0

Использование материалов блога разрешается при условии: указания авторства/источника, некоммерческого использования и сохранения лицензии.

Начать поиск

Введите ключевые слова для поиска статей

↑↓
ESC
⌘K Горячая клавиша