Power8上的PM_DATA_ALL *和PM_DATA *事件有什么区别?

时间:2016-01-24 21:38:52

标签: powerpc perf oprofile papi

在使用perf评估Power8处理器的内存性能时,我最终遇到了解事件PM_DATA_ALL_*PM_DATA_*之间差异的问题。大多数计数器都存在于两个版本中,但oprofile documentationpapi_native_avail中的说明相同,例如:

  

PM_DATA_FROM_LMEM

     

处理器的数据缓存是从本地芯片的内存重新加载的,因为只有需求加载或需求加载加上预取,如果MMCR1 [16]为1。

我虽然会通过测量一些数据来找出差异。如果我提供足够大的任务,我可以观察*_ALL版本具有更高值的预期差异。我理解使用perf在度量中复用计数器的概念。

那么在这些事件中究竟是什么呢?

1 个答案:

答案 0 :(得分:2)

经过几个小时的搜索,我发现另一个source directly from IBM将事件描述为:

  

<强> PM_DATA_ALL_FROM_LMEM

     

由于需求加载或数据预取

,处理器的数据缓存从本地芯片的内存重新加载

  

<强> PM_DATA_FROM_LMEM

     

由于需求负载,处理器的数据缓存从本地芯片的内存重新加载

因此差异会导致预取加载,而第二版中不会包含此内容。

PAPI和perf工具只包含错误的描述。这些事件由IBM contributed直接发送到oprofile,但可能存在一些错误/不准确之处。当我浏览PAPI/libpfm source时,我发现正确的说明位于.pme_short_desc字段中,但.pme_long_desc字段都相同。 papi_native_avail仅报告长篇文章: Thanks ... Very fu**ing useful!

感谢您的耐心等待。总结这样的东西对我有很大的帮助,我希望它能帮助那些在类似问题上挣扎的人。