Linux性能优化之(2)如何学习性能优化
其实,性能问题并没有你想象得那么难,只要你理解了应用程序和系统的几个基本原理,再进行大量的实战练习,建立起整体性能的全局观,大多数性能问题的优化就会水到渠成。
性能问题的本质,就是系统资源已经达到瓶颈,但请求的处理却还不够快,无法支撑更多的请求。
性能分析,其实就是找出应用或系统的瓶颈,并设法去避免或缓解它们,从而更高效地利用系统资源处理更多的请求。这包含了一系列的步骤,比如下面的这些步骤:
- 选择指标评估应用程序和系统的性能。
- 为应用程序和系统设置性能指标
- 进行性能基准测试
- 性能分析定位瓶颈
- 优化系统和应用程序
- 性能监控和告警
学习的重点是什么?
想要学习好性能分析和优化,建立整体系统性能的全局观是最核心的话题。因而:
- 理解最基本的几个系统知识原理
- 掌握必要的性能工具
- 通过实际的场景演练,贯穿不同的组件
在这里,不得不提到性能领域的大师布伦丹格雷格(Brendan Gregg),他不仅是动态追踪工具DTrace的作者,还开发了许许多多的性能工具。我相信你一定见过他所描述的Linux性能工具图谱:
这个图是Linux性能分析最重要的参考资料之一,它告诉你,在Linux不同子系统出现性能问题后,应该用什么样的工具来观测和分析。
比如,当遇到 I/O 性能问题时,可以参考图片最下方的I/O子系统,使用iostat、iotop、blktrace等工具分析磁盘I/O的瓶颈,
另外,特别要强调一点,就是性能工具的使用。有句话是这么说的,一个正确的选择胜过千百次的努力。虽然夸张些,但是选用合适的性能工具,确实可以大大简化整个性能优化过程。
但是切记,千万不要把性能工具当成学习的全部。工具只是解决问题的手段,关键在于你的用法。只有真正理解了它们背后的原理,并且结合具体场景,融会贯通系统的不同组件,你才能真正掌握它们。
最后,为了对性能有个全面认知,提供如下一张思维导图:
怎样学更高效?
- 虽然系统的原理很重要,但在刚开始一定不要试图抓住所有的实现细节。
- 边学边实践,通过大量的案例演练掌握Linux性能的分析和优化
- 勤思考,多反思,善总结,多问为什么