11 | 套路篇:如何迅速分析出系统CPU的瓶颈在哪里?
倪朋飞

你好,我是倪朋飞。
前几节里,我通过几个案例,带你分析了各种常见的 CPU 性能问题。通过这些,我相信你对 CPU 的性能分析已经不再陌生和恐惧,起码有了基本的思路,也了解了不少 CPU 性能的分析工具。
不过,我猜你可能也碰到了一个我曾有过的困惑: CPU 的性能指标那么多,CPU 性能分析工具也是一抓一大把,如果离开专栏,换成实际的工作场景,我又该观察什么指标、选择哪个性能工具呢?
不要担心,今天我就以多年的性能优化经验,给你总结出一个“又快又准”的瓶颈定位套路,告诉你在不同场景下,指标工具怎么选,性能瓶颈怎么找。
CPU 性能指标
我们先来回顾下,描述 CPU 的性能指标都有哪些。你可以自己先找张纸,凭着记忆写一写;或者打开前面的文章,自己总结一下。
首先,最容易想到的应该是 CPU 使用率,这也是实际环境中最常见的一个性能指标。
CPU 使用率描述了非空闲时间占总 CPU 时间的百分比,根据 CPU 上运行任务的不同,又被分为用户 CPU、系统 CPU、等待 I/O CPU、软中断和硬中断等。
用户 CPU 使用率,包括用户态 CPU 使用率(user)和低优先级用户态 CPU 使用率(nice),表示 CPU 在用户态运行的时间百分比。用户 CPU 使用率高,通常说明有应用程序比较繁忙。
系统 CPU 使用率,表示 CPU 在内核态运行的时间百分比(不包括中断)。系统 CPU 使用率高,说明内核比较繁忙。
等待 I/O 的 CPU 使用率,通常也称为 iowait,表示等待 I/O 的时间百分比。iowait 高,通常说明系统与硬件设备的 I/O 交互时间比较长。
软中断和硬中断的 CPU 使用率,分别表示内核调用软中断处理程序、硬中断处理程序的时间百分比。它们的使用率高,通常说明系统发生了大量的中断。
除了上面这些,还有在虚拟化环境中会用到的窃取 CPU 使用率(steal)和客户 CPU 使用率(guest),分别表示被其他虚拟机占用的 CPU 时间百分比,和运行客户虚拟机的 CPU 时间百分比。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Linux 性能优化实战》,新⼈⾸单¥68
《Linux 性能优化实战》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(113)
- 最新
- 精选
- 我来也[D11打卡] 这简直就是小抄😁 好像在我的场景中,使用老师提到的这些工具就够用了. 先把这些性价比高的工具琢磨好了,以后有精力了再去学些小众的. 感谢老师帮我们挑出了重点,哈哈! 时间就是金钱啊,感谢老师帮我们节约时间,更高效的学习.👍
作者回复: 😊
79 - dongge这个专栏的这篇文章值一个亿
作者回复: 谢谢😊
367 - Kino这图可以抵掉无数加班夜。极客时间最贴心讲师!鉴定完毕。
作者回复: 😊
258 - 童年的记忆🌾哎妈呀,本科4年,研究生2年,工作3年,这是我遇到的最优秀的老师了,没有之一。
作者回复: 😊谢谢鼓励
242 - Griffin哈哈哈,只有从一年级开始就当课代表才能总结的这么好。
作者回复: 终于圆了当课代表的梦😂
223 - LA老师,看了您的文章,有个问题一直在困扰这我。文章所说进程不可中断状态有可能是因为等待io响应,那这里的等待io响应包括等待从套接字读取数据么?如果是包括的话对于阻塞io来讲岂不是只要有阻塞进程就一直处在不可中断状态,从而无法被kill信号杀掉?
作者回复: 不包括套接字
57 - 每天晒白牙【D11打卡】 总结篇文章,可以多看,多操作,遇到问题可以按照思路分析,慢慢内化成自己的思路
作者回复: 👍
7 - MaxwellCPU缓存命中率如何查看呢?
作者回复: 内存模块有讲到
26 - 乖,摸摸头我一个开发人员,居然也买了
作者回复: 👍咱们专栏开发人员很多的
44 - zhoufeng老师好, 没太理解strace和perf的使用场景,文中说使用strace 分析系统调用情况,以及使用 perf 分析调用链中各级函数的执行情况。 是否可以理解为当用户态cpu使用率高时,使用perf进行分析,而当内核态cpu使用率高时,使用strace分析系统调用呢? 谢谢。
作者回复: 可以,内核态CPU使用率高的时候也可以使用perf
4
收起评论