性能瓶颈
当系统性能受到系统的一个或多个组件(阶段)的限制时,就会出现性能瓶颈。通常,单个阶段的性能下降会导致整个系统变慢。性能瓶颈可能是由于硬件限制或低效率的软件配置,或两者兼而有之。尽管系统可能会具有短时峰值性能,但是对于可持续的吞吐量,系统只能实现与其性能最差的组件一样快的性能。理想情况下,系统应该没有性能瓶颈,以便达到可用资源的最佳利用。
需要仔细检查资源利用率以确定性能瓶颈。当一个或多个资源未被充分利用时,通常表明系统中存在瓶颈。瓶颈识别是一个增量过程,修复一个瓶颈可能导致另一个瓶颈的出现。应当以顺序的方式识别瓶颈,在此期间,一次只能识别和更改一个参数,并且可以获得单个更改的影响。 一次更改多个参数可能会掩盖更改的影响。消除瓶颈后,必须再次测量性能以确保没有引入新的瓶颈。
通过仔细检查和分析各种执行期间的文件(execution profiles),可以发现并解决与性能相关的问题,其中包括:
- 执行历史记录,例如性能调用图
- 各个级别的执行统计信息,包括包,类,和方法
- 执行流程图,例如方法调用统计信息
可能有必要使用性能指标对代码进行性能分析,以进行如上类类型的性能分析。但是,大多数现代操作系统都提供用于运行时和静态性能分析的性能分析工具。
可以使用英特尔性能瓶颈分析器框架1来识别、分析、缓解应用程序的性能瓶颈。该框架会自动查找Intel Core和Atom处理器的架构瓶颈并确定其优先级。框架结合了最新的性能监视技术和静态汇编代码知识,以识别性能瓶颈。框架还对一些困难和模棱两可的情况进行优先排序并标记以进行进一步分析。该工具通过二进制文件重新创建指令执行的最关键路径,并分析这些路径,然后基于历史的性能监视事件来搜索众所周知的代码问题。
1. 6E. Niemeyer, “Intel Performance Bottleneck Analyzer,” Intel Corporation, August 2011. Retrieved from www.software.intel.com/en-us/articles/intel-performance-bottleneck-analyzer. ↩