pidstat 被常用于监控全部 或 指定进程的cpu , 内存, 线程,设备IO等系统资源 的占用情况
pidstat --htlp
Usage: pidstat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -d ] [ -h ] [ -I ] [ -l ] [ -R ] [ -r ] [ -s ] [ -t ] [ -U [ <username> ] ]
[ -u ] [ -V ] [ -v ] [ -w ] [ -C <command> ] [ -G <process_name> ] [ --human ]
[ -p { <pid> [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ]
其中
- -u:默认的参数,显示各个进程的cpu使用统计
- -r:显示各个进程的内存使用统计
- -d:显示各个进程的IO使用情况
- -p:指定进程号
- -w:显示每个进程的上下文切换情况
- -t:显示选择任务的线程的统计信息外的额外信息
例如
每隔1秒 输出 一组数据 (需要ctrl + c 才结束)
-w 参数表示输出进程切换指标,而 -u 参数则表示输出 cpu使用指标
[root@localhost ~]# pidstat -w -u 1
Linux 3.10.0-862.el7.x86_64 (localhost.localdomain) 12/22/18 _x86_64_ (2 CPU)
04:16:04 UID PID %usr %system %guest %wait %CPU CPU Command
04:16:05 0 1710 0.00 0.99 0.00 0.00 0.99 0 pidstat
04:16:04 UID PID cswch/s nvcswch/s Command
04:16:05 0 9 6.93 0.00 rcu_sched
04:16:05 0 11 0.99 0.00 watchdog/0
04:16:05 0 12 0.99 0.00 watchdog/1
04:16:05 0 44 0.99 0.00 kworker/u256:1
04:16:05 0 47 3.96 0.00 kworker/0:1
04:16:05 0 672 9.90 0.00 vmtoolsd
04:16:05 0 1098 0.99 0.00 sshd
04:16:05 0 1660 0.99 0.00 kworker/1:1
04:16:05 0 1700 2.97 0.00 kworker/1:0
04:16:05 0 1710 0.99 0.00 pidstat
cswch/s 自愿 上下文切换,如果该指标 变多了,说明进程都在等待资源,有可能发生了I/O等其他问题
nvcswch/s 非自愿上下文切换,如果该指标变多了, 说明 进程都在 被强制调度,也就是都在争抢CPU,
说明CPU的确成了瓶颈
例如
每秒 输出 一组数据
-wt 参数表示输出 线程的上下文 切换指标
-p 指定 进程
[root@localhost ~]# pidstat 1 -wt -p 35
Linux 3.10.0-862.el7.x86_64 (localhost.localdomain) 12/22/18 _x86_64_ (2 CPU)
04:28:30 UID TGID TID cswch/s nvcswch/s Command
04:28:31 0 35 - 0.00 0.00 crypto
04:28:31 0 - 35 0.00 0.00 |__crypto
04:28:31 UID TGID TID cswch/s nvcswch/s Command
04:28:32 0 35 - 0.00 0.00 crypto
04:28:32 0 - 35 0.00 0.00 |__crypto