程序员人生 网站导航

性能分析十八招,你用哪一招?

栏目:互联网时间:2014-09-29 08:00:01

对系统或程序进行相关性能分析,有助于分析研究运行时出现的问题或查找出问题根源。而没有方法论指导的分析,如盲头苍蝇,费时费力。为确保软件满足或超过设计的期望值,有必要分析应用程序的性能以发现潜在的问题。性能分析一个必不可少的环节是使应用程序的组件可见。当能够了解组件是如何交互时,就可以诊断潜在的性能问题。

主要采用的方法论,包括:USE 方法:找出资源瓶颈;TSA 方法:分析程序用时;Off-CPU分析:分析任何类型的线程延时;http://www.brendangregg.com/activebenchmarking.htmlActive Benchmarking(动态基准)分析,进行精确有效的基准分析。

以下将列举出一个综览清单,开始部分包含一些个人不建议的反对的做法,不妨作为一个反面教材来参考。

1. 推诿他人(反对的)

  • 尝试找出一个系统或环境的组件,但是该组件与你无关。
  • 假设问题出在该组件上。
  • 把问题推至与该组件真正相关的团队。
  • 当发现其实也与该团队无关时,重做第一步,继续找别人的茬。
2.  指路明灯(反对的)

  • 采用以下任一方法来选择简便工具:自己熟悉的;在Internet找来的;随机找来的。
  • 运行工具。
  • 找出显眼的问题。

3.  酒徒做法(错误做法)

随机变更事物直到问题离去。

4.  随机变更(错误做法)

  1. 测量一个性能基线。
  2. 随机找出并变更一个属性。
  3. 沿着某一个方向进行变更操作。
  4. 测量系统性能。
  5. 换个方向继续执行变更。
  6. 测量系统性能。
  7. 步骤4或6的结果好于基线吗?如果是,继续执行;否则,执行回退。
  8. 回到步骤1。

5.  被动的基准(错误做法)

  • 选择一个基准工具。
  • 采用不同的选项组合运行工具。
  • 根据结果做一个幻灯片。
  • 按着幻灯片来进行管理。

6.  临时的检查清单法

运行 A,如果出现 B,执行 C。

7.  问题陈述法

  • 什么让你觉得出现了性能问题?
  • 系统之前运作良好吗?
  • 最近执行了什么变更(例如:软件,硬件,负载)?
  • 是潜伏期或运行时间方面的性能减退问题吗?
  • 该问题会影响其他人或程序吗(还是仅仅是自己)?
  • 运行环境是怎么样的?用了什么软件或硬件?版本?配置?
8.  系统法

  • 问题
  • 假设
  • 预测
  • 测试
  • 分析

9.  工作负荷特征描述法

  • 谁正在引起工作负荷?PID,UID,IP地址等。
  • 为什么会产生工作负荷?代码路径
  • 工作负荷是什么?IOPS,tput命令,类型
  • 这些负荷随着时间是怎样变化的?

10.自上而下分析法

  • 从最高级开始
  • 检查下一级别的细节
  • 找出最关注部分进行分解
  • 如果问题得不到解决,重做第2步

11.逐层分析法

从以下方面进行造成延迟的测量:

  • 多语言
  • 执行文件
  •  运行库
  • 系统调用
  • 核心:文件系统,网络
  • 设备驱动

12.延迟分析法

  • 测量运行时间(延迟)
  • 划分成同步的逻辑部件
  • 继续进行划分直到找出延迟的根源
  • 量化:估算系统恢复后带来的速度提升

13.工具法

  • 列出可用的性能分析工具
  • 针对每个工具各自特点列出有用的指标
  • 针对每项指标,作出相关解释
  • 运行挑选后的工具,针对选出的指标进行分析

14.USE方法

对于每项资源,作出如下检查:

  • 利用率(Utilization)
  • 饱和度(Saturation)
  • 错误(Errors)

15. 栈配置法

  • 跟踪线程堆栈信息,针对on-CPU和off-CPU进行分析
  • 联合分析
  • 把堆栈倒置进行分析

16.off-CPU分析法

  • 针对堆栈中每一计划调度线程进行off-CPU时间分析
  • 对类同的堆栈进行联合分析
  • 对于最长和最短用时进行分析

17.TSA方法

1.  针对每一引起重视的线程,测量操作系统线程状态的时间。例如:

  • 执行用时
  • 运行用时
  • 交换用时
  • 睡眠用时
  • 锁用时
  • 闲时时间

2.  使用合适的工具对最高和最低发生频率事件进行分析。

18.动态基准法

  • 以一个足够长的周期来运行测量基准。
  • 运行的时候,使用其他工具进行性能分析,查找出限制因素。

英文出自:brendangregg

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐