performance - 如何明确诊断 AIX PowerPC 上的“加载命中存储”
问题描述
我已经优化了我的编译器以生成更小的代码。然而,尽管生成的指令更少,代码路径更短,尤其是加载和存储更少,但为小型演示程序生成的代码运行速度更慢。
我怀疑问题是“加载命中商店”。我应该如何检查这个?显而易见的答案是配置文件。阅读了各种 AIX 文档后,答案似乎是使用tprof并带有一个指示“加载命中存储”的适当事件。就像是
tprof -a -usek -E PM_CMPLU_STALL_REJECT -y my_benchmark_program
但是 - 这给出了错误消息
A group with events PM_CMPLU_STALL_REJECT and PM_INST_CMPL cannot be found.
tprof 文档确实提到所选事件必须与 PM_INST_CMPL 位于同一组中。但是 - 它没有说明还可以做什么。
那么 - 我如何测试我的理论,即“加载命中存储”是性能下降的原因?
解决方案
我不是 AIX 专家,但知识中心说“pmlist”命令可用于确定哪些事件属于组(https://www.ibm.com/support/knowledgecenter/ssw_aix_72/performancetools/eventbasedprofiling. html ). 假设错误消息是正确的,并且这些事件(PM_CMPLU_STALL_REJECT 和 PM_INST_CMPL)不在同一组中,您可以执行两次相同的运行并在每次运行期间记录一个事件,如果您的基准测试以这种方式工作。
说到 load-hit-store,你想测量 PM_CMPLU_STALL_REJECT_LHS 事件吗?(对于 POWER9,PM_CMPLU_STALL_LHS。)
推荐阅读
- javascript - 数组和对象 [JavaScript]
- javascript - 剪切用户 id 猫鼬响应
- r - Rcpp:如何将R函数和Rcpp函数组合在一起制作一个包
- flutter - Flutter - 此函数的返回类型为 'FutureOr
',但不以 return 语句结尾 - c - 修复 cmd 窗口的尺寸
- excel - 在 Excel 中计算一年中的周数
- node.js - Polar accesslink API POST 用户不工作
- c# - 带有基本类型列表的 asp net core 编辑
- javascript - 在选项可以填充之前呈现 React-Select
- environment-variables - 如何在 Sapper 的 template.html 中使用环境变量?