pidstat命令详解
pidstat 命令是 sysstat 工具的一个命令,用来监控全部或者指定进程的CPU、内存、线程、设备IO等系统资源的占用情况。pidstat 首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令之后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。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:显示命令名和所有参数
 

使用实例
命令:pidstat和pidstat -u -p ALL

说明:pidstat和pidstat -u -p ALL是等效的,默认显示所有进程的CPU使用率

[root@localhost shitou]# pidstat 1 2
Linux 3.10.0-1160.71.1.el7.x86_64 (localhost.localdomain)       08/31/22       _x86_64_ (1 CPU)
 
21:31:38      UID       PID    %usr %system  %guest    %CPU   CPU  Command
21:31:39        0      1814    0.93    0.93    0.00    1.85     0  pidstat
 
21:31:39      UID       PID    %usr %system  %guest    %CPU   CPU  Command
21:31:40        0      1814    0.00    2.02    0.00    2.02     0  pidstat
 
Average:      UID       PID    %usr %system  %guest    %CPU   CPU  Command
Average:        0      1814    0.48    1.45    0.00    1.93     -  pidstat
[root@localhost shitou]#
 UID:用户ID
PID:进程ID
%usr:进程在用户空间占用CPU的百分比
%system:进程在内核空间占用CPU的百分比
%guest:任务花费在虚拟机上的CPU使用率(运行在虚拟处理器)
%CPU:任务总的CPU使用率
CPU:正在运行这个任务的处理器编号
Command:这个任务的命令名称

=========================================================================
[root@localhost shitou]# pidstat -r -p 1 1
Linux 3.10.0-1160.71.1.el7.x86_64 (localhost.localdomain)       08/31/22       _x86_64_ (1 CPU)
 
21:34:17      UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
21:34:18        0         1      0.00      0.00  128188   5104   1.02  systemd
21:34:19        0         1      0.00      0.00  128188   5104   1.02  systemd
21:34:20        0         1      0.00      0.00  128188   5104   1.02  systemd
21:34:21        0         1      0.00      0.00  128188   5104   1.02  systemd
21:34:22        0         1      0.00      0.00  128188   5104   1.02  systemd
21:34:23        0         1      0.00      0.00  128188   5104   1.02  systemd
21:34:24        0         1      0.00      0.00  128188   5104   1.02  systemd
21:34:25        0         1      0.00      0.00  128188   5104   1.02  systemd
21:34:26        0         1      0.00      0.00  128188   5104   1.02  systemd
21:34:27        0         1      0.00      0.00  128188   5104   1.02  systemd
21:34:28        0         1      0.00      0.00  128188   5104   1.02  systemd
21:34:29        0         1      0.00      0.00  128188   5104   1.02  systemd
21:34:30        0         1      0.00      0.00  128188   5104   1.02  systemd
21:34:31        0         1      0.00      0.00  128188   5104   1.02  systemd
21:34:32        0         1      0.00      0.00  128188   5104   1.02  systemd
^C
Average:        0         1      0.00      0.00  128188   5104   1.02  systemd
[root@localhost shitou]#
 

pidstat常用命令

使用pidstat进行问题定位时,以下命令常被用到:

pidstat -u 1

pidstat -r 1

pidstat -d 1

以上命令以1秒为信息采集周期,分别获取cpu、内存和磁盘IO的统计信息。

查看内存使用情况
[root@localhost shitou]# pidstat -r 1 5
Linux 3.10.0-1160.71.1.el7.x86_64 (localhost.localdomain)       08/31/22       _x86_64_ (1 CPU)
 
21:36:36      UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
21:36:37        0      1818    100.00      0.00    4592   1004   0.20  pidstat
 
21:36:37      UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
21:36:38     1000      1383      1.01      0.00  159324   2176   0.44  sshd
21:36:38        0      1818    120.20      0.00    4592   1084   0.22  pidstat
 
21:36:38      UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
21:36:39        0      1818     99.00      0.00    4592   1084   0.22  pidstat
 
21:36:39      UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
21:36:40        0      1818     99.00      0.00    4592   1084   0.22  pidstat
 
21:36:40      UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
21:36:41        0      1818     99.00      0.00    4592   1084   0.22  pidstat
 
Average:      UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
Average:     1000      1383      0.20      0.00  159324   2176   0.44  sshd
Average:        0      1818    103.40      0.00    4592   1068   0.21  pidstat
 

UID 监视任务的真实 用户的标识号
PID 进程 id
minflt/s 每秒不需要从磁盘加载页面的次要故障总数
majflt/s 每秒需要从磁盘加载页面的主要故障总数
VSZ 进程使用的虚拟内存大小

显示进程所属用户名
[root@localhost shitou]# pidstat -U 1 2
Linux 3.10.0-1160.71.1.el7.x86_64 (localhost.localdomain)       08/31/22       _                    x86_64_ (1 CPU)
 
21:41:53        USER       PID    %usr %system  %guest    %CPU   CPU  Command
21:41:54        root      1831    0.99    0.99    0.00    1.98     0  pidstat
 
21:41:54        USER       PID    %usr %system  %guest    %CPU   CPU  Command
21:41:55        root      1831    0.00    2.00    0.00    2.00     0  pidstat
 
Average:        USER       PID    %usr %system  %guest    %CPU   CPU  Command
Average:        root      1831    0.50    1.49    0.00    1.99     -  pidstat
显示磁盘IO信息
[root@localhost shitou]# pidstat -d 1 2
Linux 3.10.0-1160.71.1.el7.x86_64 (localhost.localdomain)       08/31/22        _x86_64_        (1 CPU)
 
21:43:16      UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
 
21:43:17      UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
 
Average:      UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
 
显示活跃进程上下文切换次数
pidstat -w 1 5
Linux 3.10.0-1160.71.1.el7.x86_64 (localhost.localdomain)       08/31/22        _x86_64_        (1 CPU)
 
21:44:16      UID       PID   cswch/s nvcswch/s  Command
21:44:17        0         6      2.00      0.00  ksoftirqd/0
21:44:17        0         9      7.00      0.00  rcu_sched
21:44:17        0       672      1.00      0.00  NetworkManager
21:44:17        0      1807      1.00      0.00  kworker/0:2
21:44:17        0      1826      4.00      0.00  kworker/0:1
21:44:17        0      1833      1.00      1.00  pidstat
 
21:44:17      UID       PID   cswch/s nvcswch/s  Command
21:44:18        0         6      1.98      0.00  ksoftirqd/0
21:44:18        0         9      3.96      0.00  rcu_sched
21:44:18        0        11      0.99      0.00  watchdog/0
21:44:18     1000      1383      0.99      0.00  sshd
21:44:18        0      1807      0.99      0.00  kworker/0:2
21:44:18        0      1826      3.96      0.00  kworker/0:1
21:44:18        0      1833      0.99      0.99  pidstat
 
21:44:18      UID       PID   cswch/s nvcswch/s  Command
21:44:19        0         6      2.02      0.00  ksoftirqd/0
21:44:19        0         9      9.09      0.00  rcu_sched
21:44:19        0       672      3.03      0.00  NetworkManager
21:44:19     1000      1383      1.01      0.00  sshd
21:44:19        0      1807      1.01      0.00  kworker/0:2
21:44:19        0      1826      4.04      0.00  kworker/0:1
21:44:19        0      1833      1.01      1.01  pidstat
 
21:44:19      UID       PID   cswch/s nvcswch/s  Command
21:44:20        0         6      2.00      0.00  ksoftirqd/0
21:44:20        0         9      9.00      0.00  rcu_sched
21:44:20        0       302      1.00      0.00  kworker/0:1H
21:44:20        0       672      3.00      0.00  NetworkManager
21:44:20     1000      1383      1.00      0.00  sshd
21:44:20        0      1807      1.00      0.00  kworker/0:2
21:44:20        0      1826      5.00      0.00  kworker/0:1
21:44:20        0      1833      1.00      1.00  pidstat
 
21:44:20      UID       PID   cswch/s nvcswch/s  Command
21:44:21        0         6      2.00      0.00  ksoftirqd/0
21:44:21        0         9      9.00      0.00  rcu_sched
21:44:21        0       672      3.00      0.00  NetworkManager
21:44:21     1000      1383      1.00      0.00  sshd
21:44:21        0      1807      1.00      0.00  kworker/0:2
21:44:21        0      1826      5.00      0.00  kworker/0:1
21:44:21        0      1833      1.00      1.00  pidstat
 
Average:      UID       PID   cswch/s nvcswch/s  Command
Average:        0         6      2.00      0.00  ksoftirqd/0
Average:        0         9      7.60      0.00  rcu_sched
Average:        0        11      0.20      0.00  watchdog/0
Average:        0       302      0.20      0.00  kworker/0:1H
Average:        0       672      2.00      0.00  NetworkManager
Average:     1000      1383      0.80      0.00  sshd
Average:        0      1807      1.00      0.00  kworker/0:2
Average:        0      1826      4.40      0.00  kworker/0:1
Average:        0      1833      1.00      1.00  pidstat
 

UID
PID
cswch/s 每秒自愿上下文切换次数
nvcswch/s 显示每秒非自愿上下文切换的次数
Command 进程命令行