Утилита pidstat в Unix/Linux

Утилита 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» завершена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.