性能测试-pidstat 问题定位分析

pidstat 概述

pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
常用的参数 解释
-u  默认的参数,显示各个进程的cpu使用统计
 -r 显示各个进程的内存使用统计
-d 显示各个进程的IO使用情况 
-p 指定进程号
-w 显示每个进程的上下文切换情况
-t  显示选择任务的线程的统计信息外的额外信息
-T{TASK或CHILD或ALL}   这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
-V 版本号
-h  在一行上显示了所有活动,这样其他程序可以容易解析
 -I(大写的i) 在SMP环境,表示任务的CPU使用率/内核数量
-l  显示命令名和所有参数
正确使用该命令 要理解几个特殊的字段:
名称 解释
pid 进程ID
lwp 线程ID。在用户态的命令(比如ps)中常用的显示方式
tid 线程ID,等于lwp。tid在系统提供的接口函数中更常用,比如syscall(SYS_gettid)和syscall(__NR_gettid)
tgid 线程组ID,也就是线程组leader的进程ID,等于pid。
pgid 进程组ID,也就是进程组leader的进程ID。
pthread id pthread库提供的ID,生效范围不在系统级别,可以忽略。
sid session ID for the session leader。
tpgid tty process group ID for the process group leader
下面介绍一下各个命令 返回字段的含义:
pidstat -u -p pid

 

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

 

PID:进程标识符
Minflt/s:任务每秒发生的次要错误,不需要从磁盘中加载页
Majflt/s:任务每秒发生的主要错误,需要从磁盘中加载页
VSZ:虚拟地址大小,虚拟内存的使用KB
RSS:常驻集合大小,非交换区五里内存使用KB
Command:task命令名
pidstat -d -p pid

   

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

  

PID:进程id
Cswch/s:每秒主动任务上下文切换数量
Nvcswch/s:每秒被动任务上下文切换数量
Command:命令名
pidstat -t -p pid

  

TGID:主线程的表示
TID:线程id
%usr:进程在用户空间占用cpu的百分比
%system:进程在内核空间占用cpu的百分比
%guest:进程在虚拟机占用cpu的百分比
%CPU:进程占用cpu的百分比
CPU:处理进程的cpu编号
Command:当前进程对应的命令
pidstat -T ALL -p pid

  

PID:进程id
Usr-ms:任务和子线程在用户级别使用的毫秒数。
System-ms:任务和子线程在系统级别使用的毫秒数。
Guest-ms:任务和子线程在虚拟机(running a virtual processor)使用的毫秒数。
Command:命令名

性能分析案例

这里以分析的java程序的为案例:

  • 1、查找到你所观察程序的进程号

       

jps -l

  

  • 2、获取进程pid之后 查看该进程的cpu 使用情况:
 pidstat -u -p 15173 1

  

  • 3、 假如该进程的cpu使用率过高 通过更细粒度的命令进行观察: 
pidstat -t -p 15173 1

  

  • 4、定位到占用cpu使用频率过高的线程 例如上图(这里是假如)15181 然后通过 jstack - l 15181 >/tmp/15181.txt 将线程数据导出 即可分析结果
  • 5、这个方法可以很准确的定位到是java的那个方法出了问题 占用cpu过高

  

猜你喜欢

转载自www.cnblogs.com/emars/p/12145101.html
今日推荐