关于CPU使用率相关重要指标,我们经常在使用top、dstat、vmstat等工具看到 , 这里解读一下:
- user(通常缩写为us),代表用户态CPU时间 。
- nice(通常缩写为ni),代表低优先级用户态CPU时间,nice可取值范围是-20到19,数值越大,优先级反而越低,默认值是0 。
- system(通常缩写为sys),代表内核态CPU时间 。
- idle(通常缩写为id),代表空闲时间 。注意,它不包括等待I/O的时间(iowAIt) 。
- iowait(通常缩写为wa),代表等待 I/O的CPU时间 。
- irq(通常缩写为hi),代表处理硬中断的CPU时间 。
- softirq(通常缩写为si),代表处理软中断的CPU时间 。
- steal(通常缩写为st),代表当系统运行在虚拟机中的时候,虚拟机占用的CPU时间 。
- guest(通常缩写为guest),代表通过虚拟化运行其他操作系统的时间,也就是运行虚拟机的CPU时间 。
- guest_nice(通常缩写为gnice),代表以低优先级运行虚拟机的时间 。
1、运行 dstat 命令,观察 CPU 和 I/O 的使用情况
文章插图
- 结果分析 。
- 在iowait升高(wai)时,磁盘的读请求(read)都很高 , 最高时1271M 。
- 充分说明iowait的升高是磁盘I/O导致的,确切的说,是大量读磁盘导致的 。
# -d:统计进程的磁盘使用情况 1: 采集周期1s10: 采集10次pidstat -d 1 10
- 1.
- 2.
文章插图
- 结果分析 。
- 大量读磁盘的进程名称是App , 而且app进程的pid在不停变化(短时进程?)
文章插图
- 结果分析 。
- 进程的状态是Z+,命令行参数<defunct>,进程变成僵尸进程了 。
- 僵尸进程的产生和处理方法 , 这里暂不展开,有想了解的可以评论留言或者自行学习 。
- app的是谁创建的,是下一步分析的重点 。
文章插图
- 结果分析 。
- pid为51780的父进程id是51688,进程名称也是app 。
# 录制全局性能事件,如果只想录制某个进程的,可以使用-p指定# perf record -ag -p {pid} -- sleep 10 #采集指定pid所有cpu的性能事件,周期是10sperf record -g# 分析报告perf report
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
文章插图
- 分析结果 。
- app进程正在对磁盘进行直接读 , 也就是绕过了系统缓存,每个读请求都会从磁盘直接读 。
- 使用dstat命令查看系统I/O情况(dstat可以同时观察cpu和磁盘的情况) 。
- 使用pidstat命令可以定位到进程维度的磁盘读写情况,找出可疑进程 。
- 使用ps、top等命令可以观测到进程的状态(D、R、S、Z、T等) 。
- 使用pstree命令我们找出了app进程的父进程(子进程的pid一直在变) 。
推荐阅读
- 了解Android系统架构中的HAL硬件抽象层
- 3d图片怎么观看,上下或左右格式3d影片用什么眼镜观看
- 用oppo65w快充给30w手机充电
- 抖音如何关闭复制链接,抖音能咋滴右下角复制链接
- ppt放映怎么全屏一键重装系统
- qq紧冻号方法,时间类型:QQ号码进入保护模式后系统会限制一个时间时间到了自动解除怎么弄
- 刘亦菲异域风旅游照惊艳曝光,如公主殿下般养眼
- 《一念关山》:宁远舟麾下四大高手,谁才是萧皇后和章崧安插在使团的内鬼?
- 椒盐鱼下巴哪里菜系,椒盐鱼下巴是什么地方的菜
- 上下其手、脱女星裤子…“陈浩民曾志伟”之流,酒后本性暴露无遗