概述
pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。pidstat manual page
应用
命令格式
pidstat [ -C comm ] [ -d ] [ -h ] [ -I ] [ -l ] [ -p { pid [,…] | SELF | ALL } ] [ -r ] [ -t ] [ -T { TASK | CHILD | ALL } ] [ -u ] [ -V ] [ -w ] [ interval [ count ]]
*注意*同样需要注意版本问题请使用前man一下参数,本例是以sysstat9.0.4
选项解释
选项 | 含义说明 |
---|---|
-C comm | 显示包含comm字符串的任务. |
-d | 内核版本2.6+生效。I/O统计报告:会显示字段PID、kB_rd/s、kB_wr/s、kB_ccwr/s、Command |
-h | 显示所有活动进程在同一行。这是为了使它更容易被其他程序解析 |
-I | 在SMP环境中,执行任务消耗的CPU由所有处理器均分 |
-l | 列出命令所有参数。 |
-p | { pid [,…] | SELF | ALL } 统计显示被选择的任务报告.pid是进程标识.SELF关键字标识显示pidstat进程自身报告,ALL关键字显示系统管理的所有任务进程报告 |
-r | 显示缺页错误和内存使用率,当统计单独的进程时会显示字段PID、 minflt/s、majflt/s、VSZ、RSS、Command;当统计全局报告时会显示字段PID、minflt-nr、majflt-nr、Command |
-t | 显示选择进程相关的线程统计信息,会增加显示字段TGID、TID |
-T | { TASK | CHILD | ALL } |
-u | 统计CPU使用率.会增加显示PID、%usr、%system、%guest、%CPU、CPU、Command、PID、usr-ms、system-ms、guest-ms、Command |
-V | 退出时打印版本号. |
-w | 内核2.6.23+可以使用,报告任务切换活动报告,增加显示字段PID、cswch/s、nvcswch/s、Command |
参数解释
选项 | 含义说明 |
---|---|
interval | 采样周期 |
count | 采样次数 |
输出项说明
-d显示字段:
选项 | 说明 |
---|---|
PID | 进程标识 |
kB_rd/s | 以kb为单位统计每秒从磁盘读的数量 |
kB_wr/s | 以kb为单位统计每秒写入磁盘的数量 |
kB_ccwr/s | 以kb为单位统计在执行时写入磁盘被取消的数量 |
Command | 拉起进程对应的命令 |
-r单个任务报告时显示字段:
选项 | 说明 |
---|---|
PID | 进程标识 |
minflt/s | 每秒次缺页总数,次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数,不需要从磁盘加载内存页 |
majflt/s | 每秒主缺页总数,当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生,需要从磁盘加载内存页 |
VSZ | 虚拟内存大小:kb为单位统计所有任务使用的虚拟内存总量 |
RSS | 物理内存大小:kb为单位统计所有任务使用的不可交换的物理内存 |
Command | 拉起进程对应的命令 |
-r全局任务统计报告时显示字段:
选项 | 说明 |
---|---|
PID | 进程标识 |
minflt-nr | 在采样周期中统计所有轻微错误和它们的子集 |
majflt-nr | 在采样周期中统计所有严重错误和它们的子集 |
Command | 拉起进程对应的命令包括被监控的子集 |
-t显示字段
选项 | 说明 |
---|---|
TGID | 线程组leader标识 |
TID | 被监控的进程号标识 |
-u单个任务报告时显示字段:
选项 | 说明 |
---|---|
PID | 进程号标识 |
%usr | 用户态执行任务占用CPU的百分比,包括或不包括优化时间,注意不包括运行虚拟处理器时间. |
%system | 内核态执行任务占用CPU百分比 |
%guest | 虚拟态执行任务占用百分比 |
%CPU | 任务占用CPU的百分比,在SMP环境中,CPU的使用率需要被所有处理器均分 |
CPU | 任务绑定的处理器编号 |
Command | 拉起进程对应的命令 |
-u全局任务统计报告时显示字段:
选项 | 说明 |
---|---|
PID | 进程标识id和被监控的子集id |
usr-ms | 在统计周期内,用户态任务和其子任务耗时统计(ms),包括或者不包括调优时间,注意不包括运行虚拟处理器时间 |
system-ms | 在统计周期内,内核态任务和其子任务耗时统计(ms) |
guest-ms | 在统计周期内,虚拟态任务和其子任务耗时统计(ms) |
Command | 拉起进程对应的命令和其子集名称 |
-w显示字段
选项 | 说明 |
---|---|
PID | 任务ID标识 |
cswch/s | 任务每秒引发的自愿的上下文切换。自愿的上下文切换发生在任务块,因为它需要资源未就绪 |
nvcswch/s | 任务每秒引发的非自愿的上下文切换数量,这种上下文切换会导致正在执行任务的时间片强制放弃当前任务去执行其他任务。 |
Command | 拉起进程对应的命令 |
应用场景
1、针对特定进程统计(-p)
使用-p选项,我们可以查看特定进程的系统资源使用情况
2、IO情况统计(-d)
使用-d选项,我们可以查看进程IO的统计信息
3、内存使用情况统计(-r)
使用-r选项,pidstat将显示各活动进程的内存使用统计
4、cpu使用情况统计(-u)
使用-u选项,pidstat将显示各活动进程的cpu使用统计,执行”pidstat -u”与单独执行”pidstat”的效果一样
原文链接
欢迎拍砖,未完待续……