多Socket系统中Perf power/energy-pkg事件的能耗统计范围咨询
关于Perf
power/energy-pkg事件的Socket统计范围 默认情况下,你用perf stat -e power/energy-pkg/ $program得到的数值,是系统中所有CPU封装(Socket)的总能耗,不是单个Socket的统计结果。
原因说明
power/energy-pkg/事件依赖处理器的RAPL(Running Average Power Limit)接口获取能耗数据。Perf在默认配置下会自动汇总所有可用Socket的能耗数值,返回总和。
如何单独统计单个Socket的能耗
如果需要查看单个Socket的能耗,可以通过以下两种方式:
- 使用
-C参数指定目标Socket对应的核心(比如Socket 0对应核心0-7):perf stat -e power/energy-pkg/ -C 0-7 $program - 部分较新的Perf版本支持
--per-socket选项,直接按Socket拆分输出:
执行后会分别列出每个Socket的能耗数据。perf stat --per-socket -e power/energy-pkg/ $program
验证方法
你可以在多Socket机器上做个简单测试:先跑默认命令得到总能耗,再分别统计每个Socket的能耗并求和,两者数值应该基本一致(误差来自测量精度)。
内容的提问来源于stack exchange,提问作者Hamidreza Ramezani
相关产品推荐
相关产品推荐

