Инструменты пользователя

Инструменты сайта


linux:atop

Это старая версия документа!


Утилита для контроля нагрузки и процессов atop

Основным преимуществом утилиты atop является функция ведения логов. Благодаря этому можно не только контролировать нагрузку в текущий момент, но и отслеживать работу процессов за прошедшие дни, чтобы диагностировать плавающие ошибки, которые сложно «поймать» при мониторинге в реальном времени.

Утилита atop не идет предустановленной и её необходимо установить на сервер.
Для Debian / Ubintu:

apt install atop -y

Также рекомендуется добавить atop в автозагрузку:

systemctl enable atop

Запускается утилита командой:

atop

и в результате получается вывод, который выглядит примерно так:

В верхней части отображается информация о системе и нагрузке на ключевые компоненты: процессор, ядра, память, сеть. Ниже выводится список процессов.

Описание колонок в информационном выводе atop

Статистика процессов

PRC (Process Information) — статистика процессов:

  • sys — время, затраченное процессами в режиме ядра;
  • user — время, затраченное процессами в режиме пользователя;
  • proc — общее количество процессов в системе;
  • trun — количество процессов, находящихся в состоянии выполнения;
  • tslpi — количество процессов, ожидающих ресурсов в спящем режиме;
  • tslpu — количество процессов, ожидающих ресурсов в интерактивном режиме;
  • tidle — количество процессов, находящихся в состоянии простоя;
  • zombie — количество процессов-зомби;
  • clones — количество процессов, созданных с момента последнего замера;
  • exit — количество завершенных процессов.

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

CPU (CPU Utilization) — статистика производительности:

  • sys — использование процессора в режиме ядра (системные задачи);
  • user — использование процессора в режиме пользователя;
  • irq — использование процессора на обработку прерываний;
  • idle — время простоя процессора;
  • wait — время ожидания ввода/вывода;
  • steal — время, украденное гипервизором;
  • ipc — количество инструкций на такт;
  • cycl — средняя тактовая частота;
  • curf — текущая частота процессора.

Статистика загрузки процессора

CPL (CPU Load) — статистика загрузки процессора:

  • numcpu — количество доступных CPU;
  • avg1/avg5/avg15 — средняя загрузка системы за последние 1, 5 и 15 минут;
  • csw — количество переключений контекста;
  • intr — количество аппаратных прерываний.

Статистика памяти

MEM (Memory Usage) — потребление памяти:

  • tot — общий объем памяти;
  • free — свободная память;
  • avail — доступная память;
  • cache — используемая память под кеш;
  • dirty — объем данных в памяти, которые должны быть записаны на диск;
  • slab — объем памяти, используемой под SLAB-кеш;
  • shmem/shrss/shswp — объем используемой общей памяти (shared memory);
  • pgtab — используемая память под таблицы страниц.

Статистика использования swap-памяти

SWP (Swap Usage) — использование swap-памяти:

  • tot — общий объем свопа;
  • free — свободный объем свопа;
  • swcac — объем памяти, кешируемой в свопе;
  • zswap/zstor — объем памяти в zswap/zstor;
  • vmcom — используемая виртуальная память;
  • vmlim — лимит виртуальной памяти.

Статистика виртуальной памяти

PAG (Paging) — частота подкачки страниц:

  • scan/steal/stall/compact — данные по работе системы виртуальной памяти (сканирование страниц, перехваты, остановки, компактирование);
  • pgin/pgout — количество страниц, записанных в память/выгруженных из нее;
  • numamig/migrate — данные по миграции страниц в NUMA;
  • oomkill — количество завершений процессов из-за недостатка памяти.

Статистика давления на CPU

PSI (Pressure Stall Information) — информация о снижении давления в системе:

  • cpusome/memsome/memfull/iosome/iofull — метрики давления на CPU, память и ввод/вывод.

Управление логическими томами

LVM (Logical Volume Management) — управление логическими томами:

  • busy — уровень загрузки тома;
  • read/write — количество операций чтения/записи;
  • discrd — количество операций сброса данных;
  • KiB/r/KiB/w — средний размер операций чтения/записи в килобайтах;
  • MBr/s/MBw/s — скорость чтения/записи;
  • avio — среднее время ввода/вывода.

Статистика дисков

DSK (Disk Usage) — статистика дисков:

  • аналогичные параметры для физических дисков.

Сетевая статистика

NET (Network Usage) — сетевая статистика:

  • tcpi/tcpo/udpi/udpo — статистика по TCP/UDP трафику;
  • pcki/pcko — количество входящих/исходящих пакетов;
  • sp — пропускная способность;
  • si/so — скорость приема/передачи данных.

Анализ статистики atop

На что следует обратить внимание при анализе данных:

№ Параметр Значение
1. CPU: высокий sys, irq и низкий idle указывают на системные проблемы;
wait > 0% может свидетельствовать о задержках ввода/вывода.
2. MEM: высокий dirty и низкий free указывают на потенциальные задержки при записи данных на диск;
проверить использование кеша и slab-кеша.
3. SWP: высокое использование свопа (free близко к 0) может привести к замедлению системы.
4. PAG: большое количество scan и steal указывает на перегрузку системы управления памятью.
5. DSK: высокий busy (>90%) и большое время avio указывают на проблемы с производительностью дисков.
6. NET: проверить si и so на наличие узких мест в сети. Высокие erri и erro указывают на ошибки в сети.
7. PSI: значения cpusome, memsome, iosome выше 10% сигнализируют о перегрузке ресурсов.
8. CPL: средняя нагрузка (avg1, avg5, avg15) выше числа ядер (numcpu) указывает на перегрузку.

Дополнительная информация о процессах

Общий вывод команды atop содержит дополнительную информацию для каждого запущенного процесса:

Идентификатор Значение
PID идентификатор процесса;
RUID реальный идентификатор пользователя, от имени которого выполняется процесс;
EUID эффективный идентификатор пользователя, под которым выполняется процесс;
THR общее количество потоков для процесса;
SYSCPU потребление CPU за последний интервал в режиме system. (обычно системные вызовы);
USRCPU потребление CPU за последний интервал в режиме user;
VGROW рост виртуальной памяти в течении последнего интервала;
RGROW резидентный (реальный, занятый процессом ОП) рост памяти в течении последнего интервала. Может быть отрицательным, если процесс выгружается из памяти в swap;
RDDSK размер переданных данных при чтении с диска;
WRDSK празмер переданных данных при записи на диск;
ST текущий статус процесса (N в первой позиции говорит, что процесс был запущен во время последнего интервала. Вторая позиция показывает закончился ли процесс за время последнего интервала: E — exit, S - прекращено, C - прекращено но остался core dump);
EXC код завершения процесса;
S состояние процесса (S=sleep (ожидает событий), R=running (работает), Z=zombie (ожидает родительский процесс);
CPUNR идентифицирует CPU который обрабатывает процесс;
CPU процент занятости выбранного ресурса;
CMD имя процесса.

Управление

Для управления выводом используются:

Клавиши Значение
m сортировка по используемой памяти
d сортировка по нагрузке на диск
u нагрузка по пользователям
v подробная информация по процессам
i изменение интервала обновления данных (по умолчанию 10 секунд)
g вернуть вывод по умолчанию
n сортировка процессов по нагрузке на сеть (доступна при наличии установленного патча ядра)

Сочетания клавиш с Shift выстроят текущий список процессов по соответствующим параметрам:

Сочетание Значение
Shift + m сортировка процессов памяти
Shift + с сортировка по потреблению CPU (по умолчанию)
Shift + d сортировка по использованию диска
Shift + n сортировка по использованию сети

Логи atop

По умолчанию atop собирает сведения о состоянии системы каждые 10 минут и сохраняет их в файл лога, располагающийся в директории /var/log/atop.

Чтобы просмотреть лог за сегодня, выполните:

atop -r

Просомотром можно управлять с помощью клавиш:

  • t — перейти вперед по времени
  • Shift + t — перейти назад по времени

Файл за конкретный день имеет имя atop_ГГГГММДД. Чтобы просмотреть лог за нужный день, используйте команду atop -r и укажите путь к файлу, например:

atop -r /var/log/atop/atop_20250227

Изменить настройки ведения лога можно в конфигурационном файле atop, который размещается по пути /etc/default/atop:

# Интервал создания снимка нагрузки сервера, в секундах:
LOGINTERVAL=600
# Срок хранения логов
LOGGENERATIONS=28
# Путь к директории с логами:
LOGPATH="/var/log/atop"
# Имя файла логов
OUTFILE="$LOGPATH/daily.log"

Например, для того, чтобы atop делал снимок нагрузки раз в минуту, а не раз в 10 минут, следует указать LOGINTERVAL=60

Настроить ротацию логов можно, изменив значение LOGGENERATIONS. Это значение определяет срок хранения логов. Например, если указано значение 2, в /var/log/atop будет храниться три файла: один с логами за текущий день и два других за два предыдущих дня.

После внесения изменений в файл конфигурации следует перезапустить atop:

systemctl restart atop.service
/var/www/html/dokuwiki/data/attic/linux/atop.1789120031.txt.gz · Последнее изменение: — so_v_a