11 | 套路篇:如何迅速分析出系统CPU的瓶颈在哪里?
倪朋飞
该思维导图由 AI 生成,仅供参考
你好,我是倪朋飞。
前几节里,我通过几个案例,带你分析了各种常见的 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
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何快速分析系统CPU瓶颈的关键,重点在于掌握CPU性能指标和相应的性能工具。首先介绍了CPU的性能指标,包括CPU使用率、平均负载、进程上下文切换、CPU缓存命中率等,并提供了一张图表方便读者记忆。接着详细介绍了各种性能工具的使用场景和案例,包括uptime、mpstat、pidstat、vmstat、perf top、top、dstat、strace等。通过多个案例展示了如何使用这些工具来定位CPU性能瓶颈,从而帮助读者快速了解如何选择合适的工具进行性能分析。文章还提出了快速分析CPU性能瓶颈的思路,通过掌握性能指标的关联性,使用核心工具如top、vmstat和pidstat,以及进一步的进程分析工具,来快速准确地解决性能问题。整体而言,本文通过实际案例和工具使用方法,为读者提供了一套“又快又准”的瓶颈定位套路,使读者能够在实际工作中快速准确地分析系统CPU的性能瓶颈。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Linux 性能优化实战》,新⼈⾸单¥68
《Linux 性能优化实战》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(115)
- 最新
- 精选
- 我来也[D11打卡] 这简直就是小抄😁 好像在我的场景中,使用老师提到的这些工具就够用了. 先把这些性价比高的工具琢磨好了,以后有精力了再去学些小众的. 感谢老师帮我们挑出了重点,哈哈! 时间就是金钱啊,感谢老师帮我们节约时间,更高效的学习.👍
作者回复: 😊
2018-12-1482 - dongge这个专栏的这篇文章值一个亿
作者回复: 谢谢😊
2018-12-18368 - Kino这图可以抵掉无数加班夜。极客时间最贴心讲师!鉴定完毕。
作者回复: 😊
2019-05-16258 - 童年的记忆🌾哎妈呀,本科4年,研究生2年,工作3年,这是我遇到的最优秀的老师了,没有之一。
作者回复: 😊谢谢鼓励
2019-05-19242 - Griffin哈哈哈,只有从一年级开始就当课代表才能总结的这么好。
作者回复: 终于圆了当课代表的梦😂
2018-12-23223 - LA老师,看了您的文章,有个问题一直在困扰这我。文章所说进程不可中断状态有可能是因为等待io响应,那这里的等待io响应包括等待从套接字读取数据么?如果是包括的话对于阻塞io来讲岂不是只要有阻塞进程就一直处在不可中断状态,从而无法被kill信号杀掉?
作者回复: 不包括套接字
2019-06-0157 - 每天晒白牙【D11打卡】 总结篇文章,可以多看,多操作,遇到问题可以按照思路分析,慢慢内化成自己的思路
作者回复: 👍
2018-12-147 - MaxwellCPU缓存命中率如何查看呢?
作者回复: 内存模块有讲到
2019-02-2726 - blackpiglet请问 CPU 缓存命中率应该如何统计呢?perf 吗?网上看到一些例子,但缓存是否命中似乎不像其他指标那么直观。
作者回复: 是的,使用 perf。不过要注意,CPU的缓存只能在物理机上运行 perf 时才可以观察到,在虚拟机内部看不到。
2019-01-295 - 乖,摸摸头我一个开发人员,居然也买了
作者回复: 👍咱们专栏开发人员很多的
2019-07-2844
收起评论