01 | 如何学习Linux性能优化?

学习Linux性能优化的“拦路虎”

  1. 没找到有效的方法学原理

    重要的是需要深入学下去,建立起性能的全局观

  2. 性能问题的根源太复杂,即不懂怎么去分析,也不能抽丝剥茧找到瓶颈

解决“拦路虎”的方法

只要理解应用程序和系统的少数几个基本原理,再进行大量的实战练习,建立起整体性能的全局观。

那么大多数性能问题的优化就会水到渠成。

不需要了解每个组件的所有实现细节,只要能理解它们最基本的工作原理和协作方式。

性能指标是什么?

  • 性能指标:高并发 ☞ 对应的性能优化核心指标 吞吐

  • 性能指标:响应快 ☞ 对应的性能优化核心指标 延时

这两个指标是从应用负载的视角来考察性能,直接影响了产品终端的用户体验。

和它们对应的,是从系统资源的视角出发的指标,比如 资源使用率饱和度 等。

img

性能问题的本质

系统资源已经达到瓶颈,但请求的处理却还不够快,无法支撑更多的请求。

性能分析,其实就是找出应用或系统的瓶颈,并设法去避免或者缓解它们。从而更高效地利用系统资源处理更多的请求。这包含一系列的步骤,比如下面这六个步骤。

  1. 选择指标评估应用程序和系统的性能
  2. 为应用程序和系统设置性能目标
  3. 进行性能基准测试
  4. 性能分析定位瓶颈
  5. 优化系统和应用程序
  6. 性能监控和告警

学习的重点

建立整体系统性能的全局观

包括:

  1. 理解最基本的杰哥系统知识原理
  2. 掌握必要的性能工具
  3. 通过实际的场景演练,贯穿不同的组件

性能领域的大师布伦丹·格雷格(Brendan Gregg)动态追踪工具 DTrace 的作者,下图是他所描绘的Linux性能工具图谱:

img

这个图是Linux性能分析最重要的参考资料之一。它描述了在Linux不同子系统出现性能问题后,应该用什么样的工具来观测和分析。

比如,当遇到 I/O 性能问题时,可以参考图片最下方的 I/O 子系统,使用 iostat、iotop、blktrace 等工具分析磁盘 I/O 的瓶颈。你可以把这个图保存下来,在需要的时候参考查询。

性能工具的选用 ☞ 一个正确的选择胜过千百次的努力。

千万不要把性能工具当成学习的全部 ☞ 工具只是解决问题的手段,关键在于你的用法。只有真正理解了它们背后的原理,并且结合具体场景,融会贯通系统的不同组件,你才能真正掌握它们。

性能的思维导图,里面涵盖了大部分性能分析和优化都会包含的知识。

img

学习技巧

技巧一:虽然系统的原理很重要,但在刚开始一定不要试图抓住所有的实现细节。

先学会系统工作原理,但不要去深究 Linux 内核是如何做到的,而是要把你的重点放到如何观察和运用这些原理上,比如:

  • 有哪些指标可以衡量性能?
  • 使用什么样的性能工具来观察指标?
  • 导致这些指标变化的因素等。

技巧二:边学边实践,通过大量的案例演习掌握 Linux 性能的分析和优化。

技巧三:勤思考,多反思,善总结,多问为什么。

想真正学懂一门知识,最好的方法就是问问题。当你能提出好的问题时,就说明你已经深入了解了它。

学前准备

使用一到两台 Ubuntu 18.04 虚拟机,作为案例运行和分析的环境。只有通过在机器上练习,把学习的知识和案例自己过一遍,这些东西才能转化成自己的。

原文地址:https://www.cnblogs.com/custer/p/12983971.html