atop — это утилита для мониторинга системных ресурсов в Linux. Она отображает массу информации, связанной с объемом нагрузки на ресурсы системы на уровне процессов. Хорошо владеющий этой утилитой пользователь имеет огромные преимущества.
В первую очередь нужно установить команду atop в системе. Пользователи Debian/Ubuntu могут сделать это с помощью следующей команды:
sudo apt install atop
Другие пользователи Linux могут установить ее с помощью стандартного менеджера пакетов, после чего ввести ключевое слово “atop”.
Эта команда способна отображать конфиденциальную информацию о системе. Чтобы избежать любой утечки данных, мы можем получить повышенный доступ с помощью “sudo su” или “sudo -s”.
Читайте также: Основные команды Linux: как работает dpkg
Базовый вывод команды atop
Для отображения использования ресурсов системы на уровне процессов можно просто запустить команду ‘atop’ в терминале:
atop
Как вы можете видеть, экран разделен на две панели. Верхняя панель показывает накопленную статистику использования ресурсов системы, а нижняя — информацию для каждого процесса. Давайте рассмотрим каждую из них.
Накопленная статистика команды atop
Каждая запись в верхней панели показывает статистику по определенному системному ресурсу.
Статистика процессов
PRC означает “процесс”.
- Первые два значения — это время, затраченное процессами ‘sys’ (системный) и ‘user’.
- За ним следует общее количество процессов — ‘#proc’.
- Следующее значение — это количество потоков, работающих в системе в данный момент (‘#trun’).
- ‘#tslpi’ обозначает количество потоков, которые в данный момент находятся в спящем режиме и могут быть прерваны.
- ‘#tslpu’ обозначает количество потоков, которые в данный момент находятся в спящем режиме и не могут быть прерваны.
- Следующее значение — количество зомби-процессов.
- Далее следует количество вызовов системы клонирования.
- Последнее значение — это количество процессов, завершившихся за прошедшее время (‘#exit).
Статистика производительности
- CPU, само собой, относится к нагрузке CPU.
- Первые два значения показывают процентное использование всех ядер системой и пользовательскими процессами.
- Процент использования CPU для запросов прерывания (‘irq’).
- Следующее значение — процент простоя для всех ядер вместе взятых.
- Следующее значение показывает время ожидания, которое приходилось тратить каждому ядру CPU.
- Далее идет процентное значение времени простоя.
- ‘guest’ означает guest-percentage (гостевое время), то есть процессорное время, затраченное на другие виртуальные машины.
- Последние два значения указывают на текущую частоту процессора.
- Затем ‘atop’ отображает приведенную выше статистику для каждого ядра независимо друг от друга.
- CPL обозначает загрузку процессора.
- Первые три значения — средняя нагрузка за разные периоды: 1, 5 и 15 минут.
- За ним следует количество переключений контекста (‘csw’).
- Далее — количество прерываний (‘intr’).
- Последнее значение — количество доступных процессоров.
Статистика памяти
- MEM — использование памяти
- Общий объем физической памяти системы.
- Объем свободной памяти в данный момент.
- Текущий объем кэш-памяти.
- ‘buff’ в значении ‘buffer’ — объем памяти, потребляемый метаданными файловой системы.
- Сумма памяти для выделения памяти ядра показана как ‘slab’.
- Объем используемой общей памяти.
- SWP — подкачка памяти.
Статистика дисков
- DSK — использование диска
- Первое значение — процент времени, в течение которого система занята обработкой запросов.
- Выданные запросы на чтение.
- Выданные запросы на запись.
- Скорость чтения данных (в КB) на каждый запрос на чтение.
- Скорость записи данных (в КB) на каждый запрос на запись.
- Следующие два значения — временные показатели для чтения и записи на диск в мегабайтах.
- Последнее значение — это среднее количество миллисекунд, затраченных на обработку запросов.
Сетевая статистика
- NET — сетевая статистика на транспортном уровне
- ‘transport’ означает транспортный уровень в сети, который работает с протоколами передачи данных.
- Количество сегментов, полученных системой по протоколу TCP (‘tcpi’).
- Количество переданных сегментов (‘tcpo’).
- Аналогичная статистика для протокола UCP (‘udpi’ для входящего UDP и ‘udpo’ для исходящего UDP).
- ‘tcpao’ — это количество активных TCP-соединений.
- ‘tcppo’ — количество пассивных TCP-соединений, которые все еще открыты.
- Показатель повторных передач TCP — ‘tcprs’.
- Количество ошибок во входящих пакетах UDP — ‘udpie’.
- NET — сетевая статистика на сетевом уровне
- ‘network’ означает сетевой уровень, который работает с сетевыми протоколами IPv4 и IPv6.
- Количество IP-пакетов, полученных интерфейсами сети (‘ipi’).
- Количество IP-пакетов, переданных из интерфейсов (‘ipo’).
- Количество IP-пакетов, перенаправленных на другие интерфейсы (‘ipfrw’).
- Количество доставленных IP-пакетов (‘deliv’).
- Последние два пункта — это количество ICMP-пакетов, полученных и переданных интерфейсами сети.
- Следующие строки относятся к каждому активному сетевому интерфейсу.
- Первое значение — это имя сетевого интерфейса, например ‘wlp19s0’.
- Следующие два значения — это количество пакетов, которые были получены и переданы через конкретный интерфейс (‘pcki’ и ‘pcko’).
- Скорость сети в мегабитах в секунду (Mbps) — ‘sp’.
- Скорость приема и передачи битов в секунду (‘si’ и ‘so’).
- Количество ошибок в полученных и переданных пакетах (‘erri’ и ‘erro’).
- Последние два значения — это количество отброшенных пакетов в обе стороны (‘drpi’ и ‘drpo’).
На этом мы закончим обзор верхней панели команды atop.
Ресурсы системы для каждого процесса
Стоит отметить, что значения в команде ‘atop’ обновляется через определенные промежутки времени.
Общий вывод команды ‘atop’ содержит следующие детали для каждого запущенного процесса:
- PID — идентификатор процесса.
- SYSCPU — количество процессорного времени, затраченного при обработке системных задач.
- USRCPU — количество процессорного времени, затраченного в режиме пользователя.
- VGROW — объем виртуальной памяти, занятой процессом с момента последнего обновления значений.
- RGROW — объем физической памяти, занятой процессом с момента последнего обновления значений.
- RDDSK — размер переданных данных при чтении с диска.
- WRDSK — размер переданных данных при записи на диск.
- RUID — реальный идентификатор пользователя, от имени которого выполняется процесс.
- EUID — эффективный идентификатор пользователя, под которым выполняется процесс.
- ST — текущий статус процесса.
- EXC — код завершения после окончания процесса.
- THR — количество потоков внутри процесса.
- S — текущий статус основного потока процесса.
- CPU — процент использования CPU всеми процессами.
- CMD — название процесса.
В этом общем выводе процессы отсортированы по использованию процессорного времени в процентах. Как вы можете видеть, в этом конкретном выводе мы получаем небольшое количество информации для каждого типа ресурса системы.
Давайте рассмотрим информацию на уровне процесса для каждого типа ресурса системы.
Вывод использования памяти в команде atop
Команда atop предоставляет возможность изучать потребление памяти для каждого процесса, запущенного в системе. Мы можем сделать это, выполнив следующую команду:
atop -m
https://journaldev.nyc3.digitaloceanspaces.com/2020/06/atop_memory_output.png
Как мы видим, верхняя панель остается неизменной, даже если мы добавляем опцию памяти ‘-m’. Теперь давайте разберемся с колонками для каждой записи процесса:
- PID — идентификатор процесса.
- TID — идентификатор потока.
- MINFLT — количество мелких ошибок страниц, которые исправлены путем доступа к данным из свободных страниц.
- MAJFLT — количество крупных ошибок страниц, которые были устранены путем извлечения данных с диска.
- VSTEXT — объем виртуальной памяти, занимаемой текстом процесса.
- VSLIBS — объем виртуальной памяти, занимаемой общими библиотеками процесса.
- VDATA — объем виртуальной памяти, занимаемой приватными данными процесса.
- VSTACK — объем виртуальной памяти, занимаемой приватным стеком процесса.
- VSIZE — общий объем виртуальной памяти процесса.
- RSIZE — общий объем резидентной памяти, занимаемой процессом.
- MEM — процент использования RAM процессом.
Процессы отсортированы по столбцу ‘MEM’.
Поскольку ‘atop’ — это своего рода интерактивная командная утилита, мы можем изменять отображаемые столбцы прямо в ней. Для этого нам нужно просто ввести определенную опцию во время отображения информации.
Например, после запуска “atop” в терминале мы можем переключиться на отображение информации о памяти, просто введя “m”.
Вывод информации по дискам
Получить информацию об использовании диска мы можем с помощью опции -d:
atop -d
Вывод использования диска не содержит много информации. Некоторые из ключевых результатов:
- RDDSK — размер данных, переданных при чтении с диска.
- WRDSK — размер данных, переданных во время записи на диск.
- WCANCL — размер данных, которые были сначала записаны, но затем отменены.
- DSK — процент занятости диска.
- CMD — название процесса.
Следует отметить, что процессы отсортированы по столбцу ’DSK’.
Поиск запущенных в фоновом режиме команд
atop позволяет запрашивать список команд, работающих в фоновом режиме, в формате вывода командной строки:
atop -c
Если вы скопируете и вставите строки из столбца командной строки, вы можете повторно запустить тот же процесс. Этот вывод точно сообщает нам, какая команда была запущена в фоновом режиме для инициализации процесса.
Информация о потоках
Вместо простого анализа информации о процессах команда atop позволяет проверить использование ресурсов для каждого потока. Для этого нужно запустить команду:
atop -y
или просто нажать клавишу ‘y’, когда команда уже отображает информацию о системных ресурсах.
Очевидно, что ни один из столбцов системных ресурсов не изменился. Все, что было добавлено — это количество потоков соответствующего процесса.
Другая информация
С помощью команды ‘atop’ можно получить много разной информации. Вот некоторые полезные возможности.
Поиск времени запуска процесса
С помощью опции ‘-v’,можно получить характеристики процессов:
atop -v
Количество процессов для каждого пользователя в системе
atop -au
На каком ядре работает процесс?
Эта информация относится к характеристикам планирования процесса. Доступ к ней можно получить с помощью опции ‘-s’.
atop -s
Дополнительные возможности ‘atop’
Есть определенные приемы команды ‘atop’, которые могут быть полезны:
- Приостановка экрана ‘atop’ выполняется нажатием клавиши ‘z’.
- Изменение интервала времени обновления значений — нажмите клавишу ‘i’, а затем укажите количество секунд, на которое вы хотите изменить интервал.
- Прерывание для мгновенного обновления значений — клавиша ‘t’.
- Завершение работы команды ‘atop’ выполняется с помощью клавиши ‘q’.
Заключение
Конечно, команда ‘atop’ может быть слишком сложной для среднестатистического пользователя Linux. Для изучения этой полезной команды нужна терпеливость и настойчивость.