我试图了解系统范围的分析器是如何工作的。让我们拿 linux 性能 例如。对于一定的分析时间,它可以提供:
我几乎可以肯定的第一件事是,该报告只是对实际情况的估计。所以我认为有一些内核模块以一定的采样率启动软件中断 .采样率越低,分析器开销越低。中断可以读取存储性能计数器的模型特定寄存器。
下一部分是将计数器与机器上运行的软件相关联。这是我不明白的部分。
调度程序的执行(例如,而不是继续
中断的功能,它只会安排另一个,使
探查器结果不准确)。是的列表吗?任务结构 可用的对象?
甚至在指令级别的指标?
最佳答案
这几乎可以回答您的所有三个问题。
分析包括两种类型:计数和采样。计数测量
总体
数字
整个执行过程中的事件,而不提供任何见解
关于
这
指令或功能
生成
他们
.在
另一方面,
抽样给出了相关性
代码中的事件
通过捕获的指令指针样本
.
采样时,
内核指示处理器在何时发出中断
一个被选中的
事件计数器超过
临界点。吨
他的中断被内核和采样数据捕获
包括指令
指针
值被存储到一个环形缓冲区中。缓冲区由用户空间定期轮询
perf 工具及其内容
写入磁盘。
在后处理中,指令指针匹配到
二进制文件中的地址,可以翻译成函数名等
引用 http://openlab.web.cern.ch/sites/openlab.web.cern.ch/files/technical_documents/TheOverheadOfProfilingUsingPMUhardwareCounters.pdf
关于performance - 系统范围的分析器(例如 perf)如何将计数器与指令相关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28661430/