性能分析入门:PMU与分层分析方法
在软件优化的领域中,存在一个广为人知的原则:大约80%的时间花费在20%的代码上,也有观点认为是90%的时间花费在10%的代码上。这意味着软件优化的重点应放在那些消耗大量时间的关键代码上。然而,现代软硬件平台极为复杂,程序员很难准确预估这些关键代码的位置。为了避免过早优化,需要收集和解读系统数据,这个过程就是性能分析(Profiling)。
1. 性能分析基础
性能分析就像是从统计样本中推断总体的过程,通过收集和分析数据,逐渐揭示系统性能瓶颈的真实面貌。数据的收集依赖于监视器(Monitors),它能测量系统状态的转换。监视器的复杂度各不相同,简单的监视器可能只是在应用程序中添加计数器变量,以统计函数的调用次数;而复杂的监视器则可能对多个核心上运行的多个进程中的事件进行统计采样。监视器通常也被称为性能分析器(Profilers)或跟踪器(Tracers)。
为了让监视器更深入地了解处理器行为,英特尔处理器支持专门的硬件来监控性能事件,即性能监控单元(Performance Monitoring Unit,PMU)。下面我们将深入探讨PMU的相关内容。
2. PMU详解
2.1 PMU概述
现代硬件平台的复杂性使得开发者难以准确预估代码的执行情况。性能计数器的出现解决了这个问题,它为工程师提供了一种查询底层处理器指标的方法,有助于识别性能问题。
每个核心都有自己的PMU,用于收集该核心的本地数据。此外,还可能存在一个非核心PMU,用于收集核心之间共享资源的相关数据。
PMU暴露的底层处理器指标被称为事件(Events),可分为架构事件(Ar
超级会员免费看
订阅专栏 解锁全文
8913

被折叠的 条评论
为什么被折叠?



