在使用perf
I评估Power8处理器的内存性能时,我最终遇到了理解事件PM_DATA_ALL_*
与行为之间差异的问题PM_DATA_*
。大部分的计数器存在于两个版本,但在描述OProfile的文档和papi_native_avail
是相同的,例如:
PM_DATA_FROM_LMEM
由于仅需求负载或需求负载加上MMCR1 [16]为1时的预取,会从本地芯片的内存中重新加载处理器的数据缓存。
我虽然会通过测量一些数据来找出差异。如果我提供足够大的任务,则可以观察到预期的差异,即*_ALL
版本具有更高的值。我了解使用度量中的多路计数器的概念perf
。
那么这些事件到底是什么呢?
经过几个小时的搜索,我直接从IBM找到了另一个描述事件的来源:
PM_DATA_ALL_FROM_LMEM
由于需求负载或数据预取,处理器的数据缓存已从本地芯片的内存中重新加载
和
PM_DATA_FROM_LMEM
由于需求负载,已从本地芯片的内存重新加载了处理器的数据缓存
因此,差异使预取负载增加了,第二个版本中没有。
PAPI和perf工具仅包含错误的描述。这些事件是由IBM直接促成的oprofile
,但可能存在一些错误/不准确。当我浏览PAPI / libpfm源代码时,我看到正确的描述在.pme_short_desc
字段中,但是两个.pme_long_desc
字段都是相同的。并papi_native_avail
仅报告较长的一个:
感谢您的耐心配合。总结这样的东西对我有很大帮助,我希望它可以帮助那些在类似问题上苦苦挣扎的人。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句