Мониторинг производительности системы с помощью утилиты atop

Atop — популярный интерактивный монитор производительности. Является аналогом утилиты top, отличие состоит в том, что в atop выводятся только новые изменения об активных системных процессах, однако при этом есть функция ведения логов.

Окружение

  • МСВСфера АРМ/Сервер версии 8.x.

  • МСВСфера АРМ/Сервер версии 9.x.

  • МСВСфера АРМ/Сервер версии 10.x.

Установка и запуск atop

Примечание

Утилита atop доступна в репозитории EPEL. Поэтому для установки утилиты необходимо добавить упомянутый репозиторий.

  1. Откройте «Терминал»:

    Терминал
  2. Выполните команду:

    $ sudo dnf install atop
    

Для запуска утилиты используйте команду:

$ atop

Описание интерфейса 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