Наблюдение за процессами при помощи pidstat






Когда в системе творится что-то неладное, поиск причин начинается, как правило, с анализа поведения процессов, чтобы отыскать пожирателей системный ресурсов. Думаю, многие из вас пользуются замечательными утилитами top и htop, позволяющих выполнять мониторинг использования ресурсов процессами, в то время как об утилите pidstat, мне кажется, слышали немногие. Её нельзя рассматривать в качестве замены вышеупомянутым top и htop, а скорее как полезное дополнение к ним на случаи, когда вам необходимо собрать статистику по одному или нескольким процессам за определённый промежуток времени.

Activity Monitor


pidstat является одной из компонент семейства утилит sysstat, поэтому имя репозитория в вашем дистрибутиве будет, скорее всего, именно sysstat. В ныне используемом мной ArchLinux пакет sysstat был легко установлен командой:

Простой запуск

Как уже было сказано, pidstat предназначена для сбора и вывода статистики использования ресурсов процессами. Для того, чтобы указать, какие процессы вас интересуют, используется флаг -p, аргументами которого должны быть PID нужных процессов, перечисленных через запятую, или ключевое слово ALL, если требуется информация обо всех процессах. После определения всех флагов pidstat принимает два параметра: первый — это интервал в секундах, в течение которого происходит сбор статистики, а второй — количество выводимых отчётов. Второй параметр может быть опущен; в этом случае pidstat будет выводить отчёты до тех пор, пока вы не прервёте её.

Например, для того, чтобы определить количество выделяемых ресурсов процессам с PID 611 и 1102 в течение 10 секунд и вывести один отчёт, можно использовать следующую команду:

после выполнения которой вы получите примерно следующий вывод:

Средние значения, приведённые в конце отчёта, особого смысла не имеют в случае, когда pidstat отрабатывает один цикл, но весьма полезны, если вы запускаете утилиту на несколько «проходов»:

Выбор типов ресурсов для мониторинга

По умолчанию утилита в отчётах сообщает об использовании процессорного времени. При помощи флага -d её можно заставить выводить статистику ввода/вывода:

При помощи флага -r можно получить статистику использования оперативной памяти:

Фильтрация процессов по имени

pidstat позволяет выбирать процессы не по PID, а по имени или его части, используя подстроку или регулярное выражение. Например, статистика по процессам, чьи имена начинаются на 's':

В заключение

Помимо описанных возможностей, pidstat обладает ещё несколькими, мной редко используемыми. Всех желающих традиционно традиционно приглашаю к чтению man-страницы утилиты.