Материал просмотрен 3,959 раз(а)

Простейшей утилитой для мониторинга процессов является утилита top. Первоначально эта утилита была разработана для вывода информации о первых десяти процессах в порядке убывания использования ресурсов CPU, чем и заслужила своё название. В современной ОС FreeBSD утилита показывает каждый процесс, выполняющийся на данный момент в любом состоянии.

Вся фишка утилиты top в том, что она полностью интерактивна и выполняется в реальном времени. После запуска она обновляет терминал каждую секунду, предоставляя информацию о состоянии нашей системы. Далее мы познакомимся поближе с этой утилитой и научимся управлять процессами, ну а сначала разберёмся с тем, что же всё-таки она выводит.

Информация, выводимая утилитой top.

Вот скриншот экрана моей системы с запущеной утилитой top. Полезная информация понеслась уже со второй строки: показывает, сколько запущено процессов, сколько активно на данный момент, сколько простаивает и сколько находится в режиме “зомби”, а также сколько на эти процессы потребовалось времени CPU.

По умолчанию в этом списке отображаются все процессы, как простаивающие, так и активные. Мы можем переключиться между отображением/сокрытием простаивающих процессов нажатием клавиши <I>. Ещё полезная фича – убивать процессы. <K> и PID процесса, позволяют кильнуть процесс как в диспетчере задач Windows. Сейчас я это продемонстрирую.

Открем новую консоль, <Alt+F3>, залогиниваемся под root. В домашней папке создадим новый файл, я назвал его cicle.exe 🙂

# ee cicle.exe

Да, пережиток винды. Не суть важно, как мы его назовём. Содержание будет следующее:

#!/bin/sh

while true

do

printf ‘Hello /n’;

done

Расшифровывать, думаю, не надо. Скрипт просто зациклен и печатает на экране слово hello. Сохраним этот файл и добавим ему атрибут исполнения:

# chmod +x cicle.exe

и запускаем файл на исполнение:

# ./cicle.exe

Понеслась!

Переходим вновь на первую консоль <Alt+F1>, выключаем отображение простаивающих процессов и видим загрузку интерпретатора sh.

Киляем процесс по его PID, нажимаем <K> и вводим заветный идентификатор. Всё! Процесс погребён заживо.

Что за параметр load averages

Следующее, на что следует обратить внимание – это средние значения загрузки (load averages) в первой строке. Довольно непростые метрики, которые можно использовать, чтобы оценить примерную загрузку нашего сервера. В расчёт этих метрик берётся количество задач, выполнившихся за последние 1 мин, 5 мин и 15 мин соответственно. Если значения больше единицы, значит система не успевает выполнять поставленные задачи и они выстраиваются в очередь. Повторюсь, этот параметр очень приблизитиельный.

Что такое “спираль смерти” (death spiral)

Обычно для сервера нормальная загрузка – это единица, значение 5 расценивается как неустойчивая работа. Некоторые демоны прекращают приём новых запросах при высоких уровнях загрузки, как например Sendmail перкращает приём при загрузке уже в 12. Если загрузка достигает 20-30, то скорей всего система оказалась в ситуации, называемой “спираль смерти”, т.е. новые процессы создаются быстрее, чем система их может выполнить. Death Spiral – один из редких случаев, когда может понадобится перезагрузить сервер.

Показатели использования памяти

Не стоит думать, что показатель Free отображает всю доступную память в системе. Это значение показывает тот объем памяти, который ещё не использовался с момента включения системы. А на что следует обратить внимание, так это на параметр Active, поскольку он показывает, сколько памяти занято активными процессами.

Обратите внимание, что процессы перечислены в порядке убывания значения в столбце WCPU. Этот параметр показывает, сколько циклов CPU используется в данный момент времени каждым процессом.

Строка CPU states (состояние CPU) говорит о том, сколько ресурсов процессора используется в каждом из четырёх возможных состояний.

Следует помнить, что некоторые демоны (MySQL, Qmail) могут занимать 100% возможностей системы, и это поведение считается нормальным.

Значение в столбце TIME представляет количество секунд CPU, которые были отведены процессу на состояниях системы и состояниях пользователя соответственно.

Так же обратим внимание на столбцы SIZE и RES. SIZE показывает выделенный размер процесса, включая компоненты текста, данных и стека, а столбец RES показывает данные по резидентной памяти. Именно этот параметр является “классическим” объемом используемой памяти, которое показывают системы Windows и Mac OS.

Остальные столбцы не настолько важны, чтобы на них заострят внимание. PID – Process Id, уникальный идентификатор процесса, USERNAME – имя пользователя, под которым процесс запущен. STATE показывает, в каком из состояний находится процесс, что в общем-то не является информативным параметром.

Процесс Zomb (Zombie) – дочерний процесс, который был остановлен, но ещё не освободил полностью ресурсы в таблице процессов.

Клавиша <U> поможет отфильтровать процессы по имени пользователя, хозяина процессов, а клавиша <T> включает и выключает отображение самого процесса top.