31丨案例:当磁盘参数导致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
《性能测试实战 30 讲》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(12)
- 最新
- 精选
- Geek_6a9aeb老师,第一这里不明白热点函数是用什么命令去看,能完整的说下? 第二,top命令是看到某一个cpu wa使用率高,但是我经常听到开发反馈跟我说不要一个cpu,要多看多个核平均下来的使用率。开发说平均下来压力不大啊,因为不清楚究竟多核是怎么分配工作的,因此无法说服开发
作者回复: 1. perf命令。通常我是执行perf top -g。 2. 如果你有这样的场景,可以拿我来给你分析。对于wa来说,cpu均衡是肯定的。平均下来压力大不大,也不是开发说了说,而是系统说了算。
2021-01-177 - Geek_65c0a2这段时间每天都呆在家里,越发感觉生活无比的枯燥、人生多么的无趣。是什么让我感觉人生还有所期待的?是什么在支撑我一天天的就这么的过日子?是每周的一三五就有高老师的文章看。
作者回复: 这才是真爱!😀😀😀
2020-03-0227 - 夏商周这个jdb2,占用80%的io使用率,却没有输入输出。是不是有点奇怪啊。 我遇到的io问题。找到热点cpu,iotop找到线程。strace,查看系统调用,lsof看线程打开的文件。
作者回复: 你可以看下jdb2的工作原理,它工作在bi、bo之上。
2020-05-146 - Geek6198案例的分析过程 1. 看top ,注意点:看每个cpu的数值,而非仅总计值:发现CPU总值低,但有一项异常的高 2. 用perf 看CPU 热点 3. 根据上一块,可以知道cpu是在忙碌 哪个内核模块,再检查 该内核模块主要负责什么; 4. 再用iotop;找到忙碌的进程,同时可以看到该进程的执行内容 5. 综合 上述三项“cpu什么数字高”,“内核忙碌模块是什么”,“进程的忙碌内容是什么”;可以推断瓶颈的所在
作者回复: 逻辑描述得很清晰呀,就差上手实践了。
2021-11-303 - NightClown问题一:为什么 TPS 上不去时,资源用不上才是更让人着急的问题? 资源以及TPS上不去,说明压力的流量没有完整的打到服务器上,资源没有能够有效的利用,可能存在很多种原因导致的这个问题,也不知道我们系统到底能支持什么量级。举个例子就像我们有一个电视,但是一年下来只看了几个小时,那么这个电视是没有什么用的,白花了钱。 问题二:为什么要在 CPU 高时查看 CPU 热点函数呢? 因为通过CPU热点函数可以看到系统哪个模块的CPU利用率高,也就是全局-定向的分析思路,逐步分析,找到问题并且解决问题
作者回复: 得到真传。可以出师了。😀😀
2020-03-0323 - Geek_454a8fCPU热点怎么查
作者回复: perf
2021-05-1922 - 月亮和六便士看到你时不时的就会祭出perf ,但是perf出来的结果看不懂,怎么办?
作者回复: 哪里看不懂?可以找man手册。还有perf官方说明。 或者......问我。哈哈。
2020-03-0222 - Geek_6a9aeb也有一种 压力线程 增大,但是资源也上不去,tps也上不去 ,tps就稳定在那?
作者回复: 那响应时间一定会增长。
2021-01-181 - Geek_611de6linux不熟悉,看着挺吃力,我去学习一下linux
作者回复: 所有的技术在性能分析时遇到时都要学习。
2022-11-15归属地:广东 - Geek_若水老师好,我有一个小小的疑问:看一下 CPU 的热点在哪个层面。 这个具体是怎么操作的呀
作者回复: 就是统计syscall,有很多工具可以做到,我常用的就是perf。
2021-12-21
收起评论