《system performance:Enterprise and the Cloud》&《BPF PerformanceTools》,Linux性能分析大神Brendan Gregg写的两本书,都是Linux 性能调优的经典之作。前者侧重讲述分析策略,方法论以及一些常用工具,后者侧重介绍bcc/bpftrace工具,列举大量跟踪命令及分析脚本。两本书的结构很类似,可以分章节对比阅读,能够对系统各模块的性能分析/调优有一个从理论到实践的整体认识。这种经典读一遍肯定是不够的,很多内容需要对内核有深入理解才能看懂,这一系列仅记录一些能看懂且有启发的部分吧。
性能分析的概念
目标
性能分析的目的是提高业务应用的性能和降低开销,通常用一系列可观测的指标来体现性能。这些指标包括:
- 延时(Latency): 完成请求或操作所用时长,通常以ms测量。
- 频率(Rate): 每秒钟请求或操作数。
- 吞吐量(Throughput): 每秒钟传输数据的数量,通常以bits 或者bytes测量。
- 利用率(Utilization): 资源单位时间内的繁忙程度,以百分比描述。
- 开销(Cost): 成本与性能的比例。
活动
性能分析及调优需要做的工作:
- 选择性能对象及模型。
- 对软件或者硬件原型的性能进行描述。
- 对代码性能进行分析。
- 对各软件版本进行测试,关注是否有性能回退。
- 对各软件版本进行基准测试(benchmark)。
- 在指定环境下做原理验证测试。
- 对实际应用/生产环境做性能调优。
- 观测软硬件产品性能数据。
- 排查性能问题。