Это старая версия документа!
Содержание
Утилита для контроля нагрузки и процессов 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 содержит дополнительную информацию для каждого запущенного процесса:
| Идентификатор | Значение |
|---|---|
| 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

