Linux 性能优化实战
倪朋飞
资深 Linux 专家,Kubernetes 项目维护者
87256 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 65 讲
结束语 (1讲)
Linux 性能优化实战
15
15
1.0x
00:00/00:00
登录|注册

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

窃取 CPU 使用率和客户 CPU 使用率
软中断和硬中断的 CPU 使用率
等待 I/O 的CPU使用率
系统 CPU 使用率
用户 CPU 使用率
关联关系图
使用 top、vmstat 和 pidstat
从工具出发
从 CPU 的性能指标出发
sar
tcpdump
perf report
perf record
strace
dstat
perf top
top
vmstat
pidstat
mpstat
uptime
CPU缓存的命中率
进程上下文切换
平均负载(Load Average)
CPU 使用率
思考
小结
如何迅速分析CPU的性能瓶颈
活学活用,把性能指标和性能工具联系起来
性能工具
CPU 性能指标
如何迅速分析出系统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
立即购买
登录 后留言

全部留言(115)

  • 最新
  • 精选
  • 我来也
    [D11打卡] 这简直就是小抄😁 好像在我的场景中,使用老师提到的这些工具就够用了. 先把这些性价比高的工具琢磨好了,以后有精力了再去学些小众的. 感谢老师帮我们挑出了重点,哈哈! 时间就是金钱啊,感谢老师帮我们节约时间,更高效的学习.👍

    作者回复: 😊

    2018-12-14
    82
  • dongge
    这个专栏的这篇文章值一个亿

    作者回复: 谢谢😊

    2018-12-18
    3
    68
  • Kino
    这图可以抵掉无数加班夜。极客时间最贴心讲师!鉴定完毕。

    作者回复: 😊

    2019-05-16
    2
    58
  • 童年的记忆🌾
    哎妈呀,本科4年,研究生2年,工作3年,这是我遇到的最优秀的老师了,没有之一。

    作者回复: 😊谢谢鼓励

    2019-05-19
    2
    42
  • Griffin
    哈哈哈,只有从一年级开始就当课代表才能总结的这么好。

    作者回复: 终于圆了当课代表的梦😂

    2018-12-23
    2
    23
  • LA
    老师,看了您的文章,有个问题一直在困扰这我。文章所说进程不可中断状态有可能是因为等待io响应,那这里的等待io响应包括等待从套接字读取数据么?如果是包括的话对于阻塞io来讲岂不是只要有阻塞进程就一直处在不可中断状态,从而无法被kill信号杀掉?

    作者回复: 不包括套接字

    2019-06-01
    5
    7
  • 每天晒白牙
    【D11打卡】 总结篇文章,可以多看,多操作,遇到问题可以按照思路分析,慢慢内化成自己的思路

    作者回复: 👍

    2018-12-14
    7
  • Maxwell
    CPU缓存命中率如何查看呢?

    作者回复: 内存模块有讲到

    2019-02-27
    2
    6
  • blackpiglet
    请问 CPU 缓存命中率应该如何统计呢?perf 吗?网上看到一些例子,但缓存是否命中似乎不像其他指标那么直观。

    作者回复: 是的,使用 perf。不过要注意,CPU的缓存只能在物理机上运行 perf 时才可以观察到,在虚拟机内部看不到。

    2019-01-29
    5
  • 乖,摸摸头
    我一个开发人员,居然也买了

    作者回复: 👍咱们专栏开发人员很多的

    2019-07-28
    4
    4
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部