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 进程命令行