Мониторинг производительности системы с помощью утилиты atop
Atop — популярный интерактивный монитор производительности. Является аналогом утилиты top, отличие состоит в том, что в atop выводятся только новые изменения об активных системных процессах, однако при этом есть функция ведения логов.
Окружение
МСВСфера АРМ/Сервер версии 8.x.
МСВСфера АРМ/Сервер версии 9.x.
МСВСфера АРМ/Сервер версии 10.x.
Установка и запуск atop
Примечание
Утилита atop доступна в репозитории EPEL. Поэтому для установки утилиты необходимо добавить упомянутый репозиторий.
Для запуска утилиты используйте команду:
$ atop
Описание интерфейса atop
Интерфейс atop выглядит как показано на снимке экрана:
Статистика процессов
Верхняя строка PRC отображает статистику процессов:
sys— время, затраченное процессами в режиме ядра;user— время, затраченное процессами в режиме пользователя;proc— общее количество процессов в системе;trun— количество процессов, находящихся в состоянии выполнения;tslpi— количество процессов, ожидающих ресурсов в спящем режиме;tslpu— количество процессов, ожидающих ресурсов в интерактивном режиме;tidle— количество процессов, находящихся в состоянии простоя;zombie— количество процессов-зомби;clones— количество процессов, созданных с момента последнего замера;exit— количество завершённых процессов.
Мониторинг загруженности центрального процессора компьютера/сервера
Строка CPU отображает статистику производительности всего процессора. В случае, когда в компьютере/сервере используется многоядерный процессор, в вывод добавляются строки cpu, которые отображают статистику производительности каждого отдельного ядра.
sys— использование процессора в режиме ядра (системные задачи);user— использование процессора в режиме пользователя;irq— использование процессора на обработку прерываний;idle— время простоя процессора;wait— время ожидания ввода/вывода;steal— процессорные затраты гипервизора;ipc— количество инструкций на такт;cycl— средняя тактовая частота;curf— текущая частота процессора.
Строка CPL отображает статистику загрузки процессора.
numcpu— количество доступных CPU;avg1/avg5/avg15— средняя загрузка системы за последние 1, 5 и 15 минут;csw— количество переключений контекста;intr— количество аппаратных прерываний.
Мониторинг памяти
Строка MEM отображает потребление физической памяти.
tot— общий объём памяти;free— свободная память;avail— доступная память;cache— используемая память под кэш;dirty— объём данных в памяти, которые должны быть записаны на диск;slab— объём памяти, используемой под SLAB-кэш;shmem/shrss/shswp— объём используемой общей памяти (shared memory);pgtab— используемая память под таблицы страниц.
Строка SWP отображает потребление SWAP-памяти (подкачка).
tot— общий объём пространства подкачки (swap);free— свободный объём пространства подкачки (swap);swcac— объём памяти, кэшируемой в пространстве подкачки (swap);zswap/zstor— объём памяти в zswap/zstor;vmcom— используемая виртуальная память;vmlim— лимит виртуальной памяти.
Строка PAG отображает статистику виртуальной памяти.
scan/steal/stall/compact— данные по работе системы виртуальной памяти (сканирование страниц, перехваты, остановки, компактирование);pgin/pgout— количество страниц, записанных в память/выгруженных из неё;numamig/migrate— данные по миграции страниц в NUMA;oomkill— количество завершений процессов из-за недостатка памяти.
Статистика уровня ресурсного давления на CPU
Метрика PSI (Pressure Stall Information) отражает снижение уровня ресурсного давления, что свидетельствует об уменьшении временных интервалов, в течение которых исполняемые процессы испытывали дефицит вычислительных ресурсов центрального процессора.
cpusome/memsome/memfull/iosome/iofull— метрики давления на CPU, память и ввод/вывод.
Мониторинг устройств хранения данных
Строка LVM показывает статистику использования логических томов. Строка DSK отображает статистику физических дисков.
busy— уровень загрузки тома;read/write— количество операций чтения/записи;discrd— количество операций сброса данных;KiB/r/KiB/w— средний размер операций чтения/записи в килобайтах;MBr/s/MBw/s— скорость чтения/записи;avio— среднее время ввода/вывода.
Сетевая статистика
Строка NET отображает статистику сетевой активности.
tcpi/tcpo/udpi/udpo— статистика по TCP/UDP трафику;pcki/pcko— количество входящих/исходящих пакетов;sp— пропускная способность;si/so— скорость приёма/передачи данных;erri— количество ошибок при приёме пакетов;erro— количество ошибок при передаче пакетов;drpi— количество сброшенных входящих пакетов;drpo— количество сброшенных исходящих пакетов;
Анализ статистики atop
На что обратить внимание при анализе данных:
CPU
высокий
sysиirq, но низкийidleуказывают на системные проблемы;wait> 0% может свидетельствовать о задержках ввода/вывода.
MEM
высокий
dirtyи низкийfreeуказывают на потенциальные задержки при записи данных на диск;проверить использование кэша и slab-кэша.
SWP
высокое использование свопа (
freeблизко к 0) может привести к замедлению системы.
PAG
большое количество
scanиstealуказывает на перегрузку системы управления памятью.
DSK
высокий
busy(> 90%) и большое времяavioуказывают на проблемы с производительностью дисков.
NET
проверить
siиsoна наличие узких мест в сети. Высокиеerriиerroуказывают на ошибки в сети.
PSI
значения
cpusome,memsome,iosomeвыше 10% сигнализируют о перегрузке ресурсов.
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— имя процесса.
Настройка записи логов atop
Конфигурационный файл для atop — /etc/sysconfig/atop.
Конфигурация для посуточной записи логов с шагом в 10 минут (параметр INTERVAL в секундах) выглядит следующим образом:
# sysconfig atop
# Current Day format
CURDAY=`date +%Y%m%d`
# Log files path
LOGPATH=/var/log/atop
# Binaries path
BINPATH=/usr/bin
# PID File
PIDFILE=/var/run/atop.pid
# interval (default 10 minutes)
INTERVAL=600
# Имя файла логов
OUTFILE="$LOGPATH/$CURDAY.log"
При необходимости можно изменить шаг записи, изменив параметр INTERVAL. Значение указывается в секундах.
После изменения конфигурационного файла необходимо перезапустить atop:
$ sudo systemctl restart atop
Для просмотра дневного лога необходимо выполнить следующую команду в «Терминале»:
$ atop -r /var/log/atop/atop_20250809
В данном случае, /var/log/atop/atop_20250809 — путь до нужного файла с логами.
Для навигации по времени в дневном логе используются клавиши:
t— перейти вперед по времени;Shift + t— перейти назад по времени.
Для остановки сбора логов необходимо выполнить следующую команду:
$ sudo systemctl stop atop
Более подробную информации об atop и его использовании вы можете найти в соответствующем руководстве, выполнив в «Терминале»:
$ man atop