pidstat 命令

| 选择喜欢的代码风格  

pidstat 命令安装:


[root@TestMaster ~]
# pidstat
-bash: pidstat: command not found

#在Debian/Ubuntu系统中可以使用下面的命令来安装:
apt-get install sysstat

#CentOS/Fedora/RHEL版本的linux中则使用下面的命令:
yum install sysstat

pidstat 命令补充说明:


pidstat 是 sysstat 软件套件的一部分,sysstat 包含很多监控 Linux 系统状态的工具,它能够从大多数 Linux 发行版的软件源中获得。

pidstat 命令语法:


pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]

pidstat 命令选项:


-u:默认的参数,显示各个进程的cpu使用统计
-r:显示各个进程的内存使用统计
-d:显示各个进程的IO使用情况
-p:指定进程号
-w:显示每个进程的上下文切换情况
-t:显示选择任务的线程的统计信息外的额外信息
-T { TASK | CHILD | ALL }
这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。
-V:版本号
-h:在一行上显示了所有活动,这样其他程序可以容易解析。
-I:在SMP环境,表示任务的CPU使用率/内核数量
-l:显示命令名和所有参数
-C <command> 查看对应command进程的状态
[ <interval> [ <count> ]
interval 显示间隔,单位s
count 显示次数,默认一直显示。

pidstat 命令实例:


查看所有进程的 CPU 使用情况( -u -p ALL):

pidstat
pidstat -u -p ALL

#pidstat 和 pidstat -u -p ALL 是等效的。
#pidstat 默认显示了所有进程的cpu使用率。

详细说明
PID:进程ID
%usr:进程在用户空间占用cpu的百分比
%system:进程在内核空间占用cpu的百分比
%guest:进程在虚拟机占用cpu的百分比
%CPU:进程占用cpu的百分比
CPU:处理进程的cpu编号
Command:当前进程对应的命令

使用 -u 选项,pidstat 将显示各活动进程的 cpu 使用统计,执行”pidstat -u”与单独执行”pidstat”的效果一样

pidstat -u

内存使用情况统计(-r),使用 -r 选项,pidstat将显示各活动进程的内存使用统计:

[root@TestMaster ~]
# pidstat -r
Linux 3.10.0-957.10.1.el7.x86_64 (TestMaster)   05/05/2019      _x86_64_        (4 CPU)

10:17:42 AM   UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
10:17:42 AM     0         1      1.49      0.00   51612   3408   0.04  systemd
10:17:42 AM     0       360      1.37      0.00   39464   5640   0.07  systemd-journal
10:17:42 AM     0       385      0.00      0.00   44036   1728   0.02  systemd-udevd
10:17:42 AM     0       474      0.00      0.00   62044   1264   0.02  auditd
10:17:42 AM   998       494      0.00      0.00  538436  10724   0.13  polkitd
10:17:42 AM     0       497      1.50      0.00   21656   1104   0.01  irqbalance
10:17:42 AM    81       500      0.13      0.00   58352   2320   0.03  dbus-daemon
10:17:42 AM    28       501      0.05      0.00  795288   2028   0.03  nscd
10:17:42 AM    38       502      0.00      0.00   25932   1888   0.02  ntpd
10:17:42 AM     0       515      0.82      0.00   26584   1856   0.02  systemd-logind
10:17:42 AM     0       519      0.75      0.00  126316   1700   0.02  crond
10:17:42 AM     0       533      0.00      0.00   25904    956   0.01  atd
10:17:42 AM     0       552      0.00      0.00    4384    516   0.01  acpid
10:17:42 AM     0       698      0.00      0.00  107308   2712   0.03  dhclient
10:17:42 AM     0       750      0.00      0.00  112936   4344   0.05  sshd
10:17:42 AM     0       759      0.07      0.00  615708   7080   0.09  rsyslogd
10:17:42 AM     0       760      0.00      0.00  573732  16456   0.21  tuned
10:17:42 AM     0       804      0.00      0.00  445200  24152   0.30  memcached
10:17:42 AM     0       831      0.00      0.00  115436   1720   0.02  mysqld_safe
10:17:42 AM     0       980      4.92      0.00   20344  12004   0.15  JCSAgentCore
10:17:42 AM     0      1081      0.00      0.00   58272   4200   0.05  nginx
10:17:42 AM     0      1225      0.01      0.00  142012   2184   0.03  redis-server
10:17:42 AM     0      1298      0.00      0.00  110092    824   0.01  agetty
10:17:42 AM  1002      1324      0.03      0.00 2636652 515564   6.44  mysqld
10:17:42 AM     0      1689      0.00      0.00  245872   7096   0.09  php-fpm
10:17:42 AM     0      2408      1.65      0.00  168800   2236   0.03  AgentMonitor
10:17:42 AM     0      3282     10.82      0.00  775876 127856   1.60  jcloudhids
10:17:42 AM     0      3389      0.00      0.00   95052   1192   0.01  jcloudhidsupdat
10:17:42 AM     0      3610      0.00      0.00  215988   8796   0.11  python
10:17:42 AM     0      3632      0.00      0.00   12692    708   0.01  jdog-watchdog
10:17:42 AM     0      3944      0.01      0.00  289692  15184   0.19  jdog-monitor.1.
10:17:42 AM  1001      7516      0.01      0.00  338284  17788   0.22  php-fpm
10:17:42 AM  1001      7525      0.01      0.00  339232  18732   0.23  php-fpm
10:17:42 AM  1001      8567      0.00      0.00   79992  27340   0.34  nginx
10:17:42 AM  1001      8568      0.00      0.00   79776  26988   0.34  nginx
10:17:42 AM  1001      8569      0.00      0.00   80000  27360   0.34  nginx
10:17:42 AM  1001      8570      0.00      0.00   80096  27636   0.35  nginx
10:17:42 AM  1001      8571      0.00      0.00   80432  27916   0.35  nginx
10:17:42 AM  1001      8572      0.00      0.00   80604  28032   0.35  nginx
10:17:42 AM  1001      8573      0.00      0.00   79756  26984   0.34  nginx
10:17:42 AM  1001      8574      0.00      0.00   80128  27592   0.34  nginx
10:17:42 AM  1001      8918      0.01      0.00  338968  18348   0.23  php-fpm
10:17:42 AM  1001      8933      0.01      0.00  338516  17944   0.22  php-fpm
10:17:42 AM  1001      9310      0.01      0.00  338132  17640   0.22  php-fpm
10:17:42 AM     0     10100      0.01      0.00   17896   6552   0.08  UpgradePlugin
10:17:42 AM     0     10106      0.01      0.00  443844   9800   0.12  MonitorPlugin
10:17:42 AM  1001     11255      0.01      0.00  338804  18216   0.23  php-fpm
10:17:42 AM  1001     11961      0.01      0.00  338300  17724   0.22  php-fpm
10:17:42 AM  1001     12199      0.01      0.00  337732  17248   0.22  php-fpm
10:17:42 AM  1001     13799      0.01      0.00  339536  19004   0.24  php-fpm
10:17:42 AM  1001     15699      0.01      0.00  338260  17784   0.22  php-fpm
10:17:42 AM     0     19594      0.00      0.00  152664   5396   0.07  sshd
10:17:42 AM     0     19597      0.00      0.00  115568   2132   0.03  bash
10:17:42 AM  1001     25725      0.01      0.00  338160  17568   0.22  php-fpm
10:17:42 AM     0     26827      0.00      0.00  108364   1056   0.01  pidstat
--------------
PID:进程标识符
Minflt/s:任务每秒发生的次要错误,不需要从磁盘中加载页
Majflt/s:任务每秒发生的主要错误,需要从磁盘中加载页
VSZ:虚拟地址大小,虚拟内存的使用KB
RSS:常驻集合大小,非交换区五里内存使用KB
Command:task命令名

显示各个进程的IO使用情况(-d):

[root@TestMaster ~]
# pidstat -d -p 519
Linux 3.10.0-957.10.1.el7.x86_64 (TestMaster)   05/05/2019      _x86_64_        (4 CPU)

10:19:54 AM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
10:19:54 AM     0       519      8.07     25.00      0.00  crond
----------
报告IO统计显示以下信息:

PID:进程id
kB_rd/s:每秒从磁盘读取的KB
kB_wr/s:每秒写入磁盘KB
kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生。
COMMAND:task的命令名

显示每个进程的上下文切换情况(-w)

[root@TestMaster ~]
# pidstat -w -p 8567
Linux 3.10.0-957.10.1.el7.x86_64 (TestMaster)   05/05/2019      _x86_64_        (4 CPU)

10:21:29 AM   UID       PID   cswch/s nvcswch/s  Command
10:21:29 AM  1001      8567      0.43      0.00  nginx
------------
PID:进程id
Cswch/s:每秒主动任务上下文切换数量
Nvcswch/s:每秒被动任务上下文切换数量
Command:命令名

显示选择任务的线程的统计信息外的额外信息 (-t)

[root@TestMaster ~]
# pidstat -t -p 8567 
Linux 3.10.0-957.10.1.el7.x86_64 (TestMaster)   05/05/2019      _x86_64_        (4 CPU)

10:23:26 AM   UID      TGID       TID    %usr %system  %guest    %CPU   CPU  Command
10:23:26 AM  1001      8567         -    0.00    0.00    0.00    0.00     0  nginx
10:23:26 AM  1001         -      8567    0.00    0.00    0.00    0.00     0  |__nginx
---------------
TGID:主线程的表示
TID:线程id
%usr:进程在用户空间占用cpu的百分比
%system:进程在内核空间占用cpu的百分比
%guest:进程在虚拟机占用cpu的百分比
%CPU:进程占用cpu的百分比
CPU:处理进程的cpu编号
Command:当前进程对应的命令

pidstat -T注意:task 和子线程的全局的统计信息和 pidstat 选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程 kill 或者完成的时候才会被收集。

pidstat -T TASK #TASK表示报告独立的task。
pidstat -T CHILD #CHILD关键字表示报告进程下所有线程统计信息。
pidstat -T ALL #ALL表示报告独立的task和task下面的所有线程。
[root@TestMaster ~]
# pidstat -T ALL -p 8567
Linux 3.10.0-957.10.1.el7.x86_64 (TestMaster)   05/05/2019      _x86_64_        (4 CPU)

10:24:33 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
10:24:33 AM  1001      8567    0.00    0.00    0.00    0.00     0  nginx

10:24:33 AM   UID       PID    usr-ms system-ms  guest-ms  Command
10:24:33 AM  1001      8567     41050     49590         0  nginx
---------------
PID:进程id
Usr-ms:任务和子线程在用户级别使用的毫秒数。
System-ms:任务和子线程在系统级别使用的毫秒数。
Guest-ms:任务和子线程在虚拟机(running a virtual processor)使用的毫秒数。
Command:命令名


发表评论