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

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
立即购买
登录 后留言

全部留言(113)

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

    作者回复: 😊

    79
  • dongge
    这个专栏的这篇文章值一个亿

    作者回复: 谢谢😊

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

    作者回复: 😊

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

    作者回复: 😊谢谢鼓励

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

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

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

    作者回复: 不包括套接字

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

    作者回复: 👍

    7
  • Maxwell
    CPU缓存命中率如何查看呢?

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

    2
    6
  • 乖,摸摸头
    我一个开发人员,居然也买了

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

    4
    4
  • zhoufeng
    老师好, 没太理解strace和perf的使用场景,文中说使用strace 分析系统调用情况,以及使用 perf 分析调用链中各级函数的执行情况。 是否可以理解为当用户态cpu使用率高时,使用perf进行分析,而当内核态cpu使用率高时,使用strace分析系统调用呢? 谢谢。

    作者回复: 可以,内核态CPU使用率高的时候也可以使用perf

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