0

vtune 放大器 2015 使用什么技术来估计函数调用计数?

我知道它没有提供准确的信息。我想,它使用调用计数 = 函数占用的总时钟周期/单个函数运行的时钟周期

是这样吗?或者有任何分析器可以提供呼叫计数信息而不会造成太多开销。

4

1 回答 1

1

收集估计的呼叫计数基于 BTS(分支跟踪存储)使用情况。这是英特尔® 处理器中的硬件功能,可将有关所有已采用分支的信息自动存储到内存缓冲区中。函数调用被视为分支,并从此缓冲区中获取。

如果一个函数很热,它在统计上是可见的。因此,一旦硬件事件计数器溢出,它就会被性能监控中断 (PMI) 中断。一旦中断,就会启动分支的收集,当包含分支记录的内存缓冲区溢出时,在接收到分支跟踪中断 (BTI) 时将信息保存在磁盘上(保存到跟踪文件中)。然后收集等待下一个样本并收集另一个“分支束”,依此类推。

收集完成后,分析跟踪文件并将调用计数与其他分支信息分开。考虑到跟踪文件中的调用计数、样本频率和程序中的分支总数 VTune Amplifier XE 估计统计调用计数。很少调用的函数仅出现在少数样本中或根本不出现——根据这些数据估计调用计数与现实相差太远,因此它们的调用计数显示为零。

此处提供更多信息:https ://software.intel.com/en-us/articles/calculating-estimated-call-counts-with-intel-vtune-amplifier-xe-2013

英特尔® VTune™ 放大器 XE 2015 还使用英特尔® 处理器跟踪技术 ( https://intel.activeevents.com/sf14/connect/fileDownload/session/64115DDAD8D7174736E4D82C5FA3A42C/SF14_ARCS001_100f.pdf ) 以类似方式估计呼叫计数。

于 2014-11-27T16:08:02.077 回答