导论-学习性能优化

导论-学习性能优化

01 | 导读

1、性能分析要点

1)分析性能问题,要把观察到的性能问题跟系统原理关联起来,特别是把系统从应用程序、库函数、系统调用、再到内核和硬件等不同的层级贯穿起来

2、性能分析困难的原因

1)性能优化是个系统工程,牵一发而动全身。
2)它涉及了从程序设计、算法分析、编程语言,再到系统、存储、网络等各种底层基础设施的方方面面
3)每一个组件都有可能出问题,而且很有可能多个组件同时出问题

3、性能问题本质

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

4、性能分析的6个步骤

1)选择指标评估应用程序和系统的性能
2)为应用程序和系统设置性能目标
3)进行性能基准测试
4)性能分析定位瓶颈
5)优化系统和应用程序
6)性能监控和告警
7)小结:性能分析就是找出应用或系统的瓶颈,并设法去避免或者缓解它们,从而更高效地利用系统资源处理更多的请求

02 | 学习方式

1)最好的学习方式一定是带着问题学习,而不是先去看那几本大部头原理书籍,以免打击信心。
2)不需要了解每个组件的所有实现细节,只要能理解它们最基本的工作原理和协作方式
3)理解应用程序和系统的少数几个基本原理,再进行大量的实战练习,建立起整体性能的全局观,大多数性能问题就可以解决了

03 | 学习内容

1)学习基础,了解Linux 必备的基本原理以及对应的性能指标和性能工具
2)学习案例,通过分析案例,了解高手在遇到资源瓶颈时,是如何观测、定位、分析并优化这些性能问题的
3)学习套路,梳理出排查问题的整体思路,也就是检查性能问题的一般步骤,遇到类似问题可以进行参考

04 | 学习重点

1、核心

1)想要学习好性能分析和优化,建立整体系统性能的全局观是最核心的话题。

2、3个重点

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

3、Linux性能工具图谱

1)图谱指出在Linux不同子系统出现性能问题后,应该用什么样的工具来观测和分析
2)千万不要把性能工具当成学习的全部,工具只是解决问题的手段,关键在于你的用法。

导论-学习性能优化
(图片来自brendangregg.com)

05 | 学习技巧

1)技巧一:虽然系统的原理很重要,但在刚开始一定不要试图抓住所有的实现细节。
2)技巧二:边学边实践,通过大量的案例学习掌握 Linux 性能的分析和优化。
3)技巧三:勤思考,多反思,善总结,多问为什么。

06 | Linux性能分析思维导图

1、性能分析和优化知识

1)个人目标:先学习CPU、内存、应用程序、架构设计、性能测试

导论-学习性能优化

07 | 性能瓶颈的排查思路

1、有监控

1)直接看监控大盘,看看有没有异常报警

2、无监控

1)通过命令查看系统层面有没有异常
2)使用top或者htop查看系统的平均负载,一般是平均负载的值大于机器cpu的核数,这时候说明机器资源已经紧张了
3)定位原因,先用top查看cpu每个核的使用情况,若占比很高,进而查看占用率最高的进程
4)若cpu无问题,使用free去查看内存的是用情况,但不直接看他剩余了多少,还要结合看看cache和buffer,然后再看看具体是什么进程占用了过高的内存,使用top去排序
5)若内存无问题,使用iostat查看磁盘
6)若磁盘无问题,使用iftop去查看流量情况,看看流量是否超过的机器给定的带宽
7)若系统层面指标无问题,则考虑外部系统:数据库、缓存、存储
(内容整理自forever留言)

08 | 思维导图

1、导论-学习性能优化思维导图
导论-学习性能优化

参考文献:

[1] 倪朋飞. Linux性能优化实战[M]. 极客时间, 2018.