Утилита pidstat в Unix/Linux
Утилита pidstat– это сокращение от PID Statistics (статистика по PID) и входит в sysstat пакет и используется для мониторинга процессов в режиме реального время. Это инструментальное средство выдает различные статистические данные по процессу, в том числе об использовании процессора, об использовании процессом дискового пространства, о потоках, связанных с выбранными задачами и дочерними процессами.
Установка pidstat в Unix/Linux
По умолчанию, данная утилита не поставляется с Unix/Linux и ее нужно будет установить. pidstat является частью Sysstat пакета, который содержит различные инструменты производительности системы для Linux, она доступна в репозитории большинства дистрибутивов Linux.
Установка pidstat в CentOS/Fedora/RedHat
Выполните команду:
# yum install sysstat -y
Установка pidstat в Debian/Ubuntu/Mint
Выполните команду:
# apt-get install sysstat -y
Установка pidstat в других Unix/Linux ОС
Сейчас будем собирать с исходного кода:
# cd /usr/local/src/ && git clone git://github.com/sysstat/sysstat && cd sysstat
И собираем:
# ./configure && make && make install
Использование pidstat в CentOS/Fedora/RedHat
Запуск pidstat без какого-либо аргумента равносильно «-p ALL» аргументу:
# pidstat -p ALL # pidstat
Вывод можно получить следующий:
Linux 2.6.32-042stab112.15 (linux-notes.org) 02/21/2017 _x86_64_ (24 CPU) 04:44:24 PM UID PID %usr %system %guest %CPU CPU Command 04:44:24 PM 0 1 0.00 0.00 0.00 0.01 3 systemd 04:44:24 PM 1001 21820 0.00 0.00 0.00 0.00 0 php-fpm 04:44:24 PM 1001 21835 0.00 0.00 0.00 0.00 3 php-fpm 04:44:24 PM 0 138991 0.00 0.00 0.00 0.00 0 bash 04:44:24 PM 992 139041 0.00 0.00 0.00 0.00 3 check_ping 04:44:24 PM 992 139042 0.00 0.00 0.00 0.00 3 ping 04:44:24 PM 0 139044 0.00 0.00 0.00 0.00 3 pidstat 04:44:24 PM 998 162672 0.00 0.00 0.00 0.00 2 fcgiwrap
Где:
- PID — Идентификационный номер задачи (процесса).
- %usr -Процент CPU, который использовался при выполнении задачи на уровне пользователя (приложения) с или без «»nice приоритета. Обратите внимание, что это поле не включает время, затраченное на работу виртуального процессора.
- %system — Процент CPU, используемый при выполнении задачи на системном уровне.
- %guest — Процент CPU, используемый при выполнении задачи на виртуальной машине (работает виртуальный процессор).
- %CPU — Сумарный процент CPU времени на потраченную задачу. В среде SMP, использование процессора на задачу будет разделена на общее число процессоров.
- CPU — номер процессора, к которому прикреплена задача.
- Command — Имя команды.
Так же, можно посмотреть общее количество процессов:
# pidstat -p ALL | wc -l
Можно узнать информации по определенному PID:
# pidstat -p 10990 Linux 2.6.32-642.4.2.el6.x86_64 (localhost.localdomain) 02/26/2017 _x86_64_ (1 CPU) 12:33:07 AM PID %usr %system %guest %CPU CPU Command 12:33:07 AM 10990 0.01 0.01 0.00 0.02 0 yumBackend.py [root@localhost src]#
Просмотр I/O статистики
Мы можем использовать pidstat утилиту чтобы получить статистику ввода/вывода для некоторого процесса, используя флаг «-d». Для примера:
# pidstat -d -p ALL
Вывод:
04:52:21 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command 04:52:21 PM 0 1 35.34 289.20 9.68 systemd 04:52:21 PM 0 2 0.00 0.00 0.00 kthreadd/7070 04:52:21 PM 0 3 0.00 0.00 0.00 khelper/7070 04:52:21 PM 0 78 0.06 0.00 0.00 systemd-journal 04:52:21 PM 0 122 0.12 0.00 0.00 systemd-logind 04:52:21 PM 81 147 0.09 0.00 0.00 dbus-daemon 04:52:21 PM 0 210 0.00 0.00 0.00 agetty 04:52:21 PM 0 218 0.00 0.00 0.00 agetty 04:52:21 PM 1001 3419 0.00 0.00 0.00 php-fpm 04:52:21 PM 1001 21745 0.00 0.00 0.00 php-fpm 04:52:21 PM 1001 21818 0.00 0.00 0.00 php-fpm 04:52:21 PM 1001 21819 0.00 0.00 0.00 php-fpm 04:52:21 PM 1001 21820 0.00 0.00 0.00 php-fpm 04:52:21 PM 1001 21835 0.00 0.00 0.00 php-fpm
Где:
- kB_rd/s — Это количество килобайтов когда процесс считал данные с диска за секунду.
- kB_wr/s -Это количество килобайтов когда процесс считал или считает данные с диска за секунду.
- kB_ccwr/s -Это количество килобайтов когда записи на диск былы отменены задачей.
Получить ошибки страниц и использование RAM
статистику использования оперативной памяти
Используйте «-r» опцию чтобы получить статистику об использования оперативной памяти и ошибок страниц:
# pidstat -r -p ALL
Вывод:
04:59:29 PM UID PID minflt/s majflt/s VSZ RSS %MEM Command 04:59:29 PM 0 1 0.39 0.00 194796 2632 0.04 systemd 04:59:29 PM 0 2 0.00 0.00 0 0 0.00 kthreadd/7070 04:59:29 PM 0 3 0.00 0.00 0 0 0.00 khelper/7070 04:59:29 PM 0 36783 0.00 0.00 113208 1572 0.02 mysqld_safe 04:59:29 PM 999 37097 1.66 0.00 1335544 484836 7.71 mysqld 04:59:29 PM 0 37204 0.00 0.00 82420 1384 0.02 sshd 04:59:29 PM 1001 93409 0.05 0.00 1035196 116520 1.85 php-fpm 04:59:29 PM 1001 93410 0.05 0.00 1106712 136956 2.18 php-fpm 04:59:29 PM 1001 93411 0.05 0.00 1035700 120460 1.91 php-fpm 04:59:29 PM 1001 93412 0.06 0.00 1033676 118668 1.89 php-fpm
Где:
- minflt/s — Общее число незначительных сбоев, когда задача выполнялась каждую секунду и не требуют загрузки страничной памяти с диска.
- majflt/s — Общее число незначительных сбоев, когда задача выполнялась каждую секунду и требуют загрузки страничной памяти с диска.
- VSZ — Virtual Size: Виртуальное использование памяти для всех задач в килобайтах.
- RSS — Resident Set Size: Использование физической памыти, но не свапа ( non-swapped) в килобайтах.
Еще примеры.
Отображение статистики по эффективности на основе имени процесса:
# pidstat -C "mysql"
Или:
# pidstat -C mysql
Можно повторять выдачи результата через определенный интервал времени (например 3 секунды):
# pidstat -C mysql -3
Для того, чтобы показать все дочерние сервера MySQL вы можете использовать следующую команду:
# pidstat -T CHILD -C mysql
Однако при использовании опции «-l», можно будет просмотреть полный путь к команде и все его аргументы, как показано ниже:
[root@localhost src]# pidstat -C mysql -l Linux 2.6.32-642.4.2.el6.x86_64 (localhost.localdomain) 02/26/2017 _x86_64_ (1 CPU) 12:43:53 AM PID %usr %system %guest %CPU CPU Command 12:43:53 AM 4162 0.02 0.01 0.00 0.03 0 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysql/mysqld.log --pid-file=/var/ [root@localhost src]#
Используя опцию «-t», можно вывести на экран вывод в виде tree (дерева), как показано ниже:
# pidstat -t -C "mysql"
Можно использовать pidstat чтобы найти утечку памяти, используя следующую команду:
# pidstat -r 2 5
Будет показано 5 отчетов в промежуточным временем 2 секунды на отчет о текущей статистики страницы неисправностей.
Чтобы посмотреть подкачку для определенного процесса, используем:
# pidstat -p 3243 -r 1
Чтобы посмотреть всю статистику в горизонтальном виде и на одной строке, используйте:
# pidstat -rud
Однако, если вы хотите, видеть всю статистику в горизонтальном виде и на одной строке для отдельного процесса, используйте опцию «-h», как показано ниже:
# pidstat -urd -h
Эта команда имеет много вариантов, и для получения дополнительной информации, используйте:
$ man pidstat
Вот и все, статья «Утилита pidstat в Unix/Linux» завершена.