我在CPI breakdown model for POWER8之后对IBM POWER8服务器上运行的应用程序执行性能分析。
我知道我需要减少例如由缓存未命中(PM_CMPLU_STALL_DCACHE_MISS
)或分支误预测(PM_CMPLU_STALL_BRU
)引起的停顿百分比。 POWER7 performance analysis tutorial表示编写良好的应用程序具有高最终指令完成百分比(PM_1PLUS_PPC_CMPL
)。
我是否理解为了POWER8我需要最大化 PM_GRP_CMPL
指标的百分比?我应该尝试哪些其他基于PMU的指标最大化?
答案 0 :(得分:1)
明确指出:您需要优化源代码
最小化PM_RUN_CYC
,即软件任务完成所需的周期数。
您提供的引用将PM_RUN_CYC
+ PM_CMPLU_STALL
+ PM_GCT_NOSLOT_CYC
分解为PM_GRP_CMPL
。
您希望减少三个组件的最大贡献者。例如,通过重新组织代码来减少缓存未命中,从而最大限度地减少停顿。 "没有插槽"循环与分支错误预测和指令缓存未命中有关。
PM_GRP_CMPL
是"微编码指令
跨越多个组将每组生成一次此事件"。不清楚这告诉了什么。在任何情况下,您希望最小化 - 不要最大化这些计数。