性能测试实战 30 讲
高楼
前 HP 高级性能专家,7DGroup 创始人
45941 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 37 讲
性能测试实战 30 讲
15
15
1.0x
00:00/00:00
登录|注册

31丨案例:当磁盘参数导致I/O高的时候,应该怎么办?

查看CPU热点函数的重要性
TPS上不去时的问题
总结
压力工具结果
关闭barrier参数
jbd2进程分析
CPU热点分析
硬件资源用不上
TPS上不去
磁盘I/O栈分析
Direct I/O技术
内存瓶颈转嫁给CPU和磁盘I/O
内存不够时的处理
磁盘I/O密集型
CPU密集型
思考题
问题解决之后
分析过程
案例现象
磁盘I/O分析
空间转时间、时间转空间的优化
性能瓶颈
性能优化

该思维导图由 AI 生成,仅供参考

在大部分的性能项目中,当系统调优到一定程度的时候,性能的瓶颈往往会体现在两类计数器上:一个是 CPU,另一个就是磁盘 I/O 了。所以我们也经常会在一些性能优化的文章中看到两个分类,分别是 CPU 密集型和磁盘 I/O 密集型。
有人说为什么不说内存呢?内存是那么重要。不是说内存不会成为瓶颈,只不过内存的瓶颈基本上都可以转嫁给 CPU 和磁盘 I/O。当内存不够的时候,大不了就是清理得快一点。内存能表现出来的,就是满不满,而谁去清理呢?那就是 CPU 了。清理得快就得 CPU 转得快。
我们经常会听到有人说什么性能优化到最后就是“空间转时间、时间转空间的优化”。如此带有禅意的一句话,其实意思就是,CPU 不够用,就扩大内存;内存不够,就让 CPU 计算得更快一些。
举个例子,当我们需要在内存中使用很多变量时,如果内存不够,就会导致 CPU 不断清理内存中没被引用的变量来释放内存,这就导致了释放内存的动作会消耗更多的 CPU。而这时,我们就可以用增加内存的方式,让 CPU 不那么繁忙。
但这个“空间、时间转化”的论点并不会在所有的场景下成立。比如说一个应用并不需要多大内存,就是纯计算型的,那你加内存也没啥用。另外这里提到的“空间”也不是硬盘,因为如果 CPU 不够用,拿再多磁盘补也无济于事。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了磁盘I/O性能分析的复杂性和重要性,为性能测试工程师提供了有益的指导和启示。文章首先强调了性能优化是“空间转时间、时间转空间”的优化,即根据需求扩大内存或加快CPU计算速度。然后,文章讨论了磁盘I/O分析的复杂性,需要考虑磁盘I/O栈的长度和操作系统的作用。作者提到了I/O高的分析案例,强调了在性能分析中收集足够的信息的重要性。此外,文章还讨论了资源使用率和TPS之间的关系,指出专业性能分析人员更应该担心资源使用率不高。最后,通过解决实际问题的案例,文章展示了如何通过分析思路和深入学习解决性能问题,强调了性能测试和性能分析的价值。整体而言,本文为读者提供了深入的磁盘I/O性能分析知识,帮助他们更好地理解和解决性能问题。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能测试实战 30 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • Geek_6a9aeb
    老师,第一这里不明白热点函数是用什么命令去看,能完整的说下? 第二,top命令是看到某一个cpu wa使用率高,但是我经常听到开发反馈跟我说不要一个cpu,要多看多个核平均下来的使用率。开发说平均下来压力不大啊,因为不清楚究竟多核是怎么分配工作的,因此无法说服开发

    作者回复: 1. perf命令。通常我是执行perf top -g。 2. 如果你有这样的场景,可以拿我来给你分析。对于wa来说,cpu均衡是肯定的。平均下来压力大不大,也不是开发说了说,而是系统说了算。

    2021-01-17
    7
  • Geek_65c0a2
    这段时间每天都呆在家里,越发感觉生活无比的枯燥、人生多么的无趣。是什么让我感觉人生还有所期待的?是什么在支撑我一天天的就这么的过日子?是每周的一三五就有高老师的文章看。

    作者回复: 这才是真爱!😀😀😀

    2020-03-02
    2
    7
  • 夏商周
    这个jdb2,占用80%的io使用率,却没有输入输出。是不是有点奇怪啊。 我遇到的io问题。找到热点cpu,iotop找到线程。strace,查看系统调用,lsof看线程打开的文件。

    作者回复: 你可以看下jdb2的工作原理,它工作在bi、bo之上。

    2020-05-14
    6
  • Geek6198
    案例的分析过程 1. 看top ,注意点:看每个cpu的数值,而非仅总计值:发现CPU总值低,但有一项异常的高 2. 用perf 看CPU 热点 3. 根据上一块,可以知道cpu是在忙碌 哪个内核模块,再检查 该内核模块主要负责什么; 4. 再用iotop;找到忙碌的进程,同时可以看到该进程的执行内容 5. 综合 上述三项“cpu什么数字高”,“内核忙碌模块是什么”,“进程的忙碌内容是什么”;可以推断瓶颈的所在

    作者回复: 逻辑描述得很清晰呀,就差上手实践了。

    2021-11-30
    3
  • NightClown
    问题一:为什么 TPS 上不去时,资源用不上才是更让人着急的问题? 资源以及TPS上不去,说明压力的流量没有完整的打到服务器上,资源没有能够有效的利用,可能存在很多种原因导致的这个问题,也不知道我们系统到底能支持什么量级。举个例子就像我们有一个电视,但是一年下来只看了几个小时,那么这个电视是没有什么用的,白花了钱。 问题二:为什么要在 CPU 高时查看 CPU 热点函数呢? 因为通过CPU热点函数可以看到系统哪个模块的CPU利用率高,也就是全局-定向的分析思路,逐步分析,找到问题并且解决问题

    作者回复: 得到真传。可以出师了。😀😀

    2020-03-03
    2
    3
  • Geek_454a8f
    CPU热点怎么查

    作者回复: perf

    2021-05-19
    2
    2
  • 月亮和六便士
    看到你时不时的就会祭出perf ,但是perf出来的结果看不懂,怎么办?

    作者回复: 哪里看不懂?可以找man手册。还有perf官方说明。 或者......问我。哈哈。

    2020-03-02
    2
    2
  • Geek_6a9aeb
    也有一种 压力线程 增大,但是资源也上不去,tps也上不去 ,tps就稳定在那?

    作者回复: 那响应时间一定会增长。

    2021-01-18
    1
  • Geek_611de6
    linux不熟悉,看着挺吃力,我去学习一下linux

    作者回复: 所有的技术在性能分析时遇到时都要学习。

    2022-11-15归属地:广东
  • Geek_若水
    老师好,我有一个小小的疑问:看一下 CPU 的热点在哪个层面。 这个具体是怎么操作的呀

    作者回复: 就是统计syscall,有很多工具可以做到,我常用的就是perf。

    2021-12-21
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部