You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Zen5 CPU上PERF_COUNT_HW_REF_CPU_CYCLES方差远高于PERF_COUNT_HW_CPU_CYCLES?

PERF_COUNT_HW_REF_CPU_CYCLES在Zen5上的方差异常问题

我理解PERF_COUNT_HW_REF_CPU_CYCLES是恒定速率的计数器,不受CPU频率缩放影响;而PERF_COUNT_HW_CPU_CYCLES会受频率缩放影响。原本以为消除频率缩放影响能降低计数方差,但在Zen5 CPU上却出现了方差反而升高的情况!

Zen5 CPU测试结果

$ echo; for cycle_type in cycles ref-cycles; do echo -n "$cycle_type stddev: "; for i in {1..100}; do perf stat -e $cycle_type true 2>&1 | grep -E "(cycles|ref-cycles)" | grep -v "seconds"; done | awk '{gsub(/,/,""); print $1}' | awk '{sum+=$1; sumsq+=$1*$1; n++} END {mean=sum/n; print sqrt(sumsq/n - mean*mean)}'; done

cycles stddev: 146434
ref-cycles stddev: 353483

Haswell服务器测试结果(符合预期)

$ echo; for cycle_type in cycles ref-cycles; do echo -n "$cycle_type stddev: "; for i in {1..100}; do perf stat -e $cycle_type true 2>&1 | grep -E "(cycles|ref-cycles)" | grep -v "seconds"; done | awk '{gsub(/,/,""); print $1}' | awk '{sum+=$1; sumsq+=$1*$1; n++} END {mean=sum/n; print sqrt(sumsq/n - mean*mean)}'; done

cycles stddev: 64606.4
ref-cycles stddev: 46084.4

硬件与软件信息

  • Zen5 CPU型号:AMD Ryzen AI 9 HX 370 w/ Radeon 890M
  • Haswell CPU型号:Intel(R) Xeon(R) CPU E5-2698 v3 @ 2.30GHz
  • Perf版本:6.14.2

补充说明

Peter Cordes指出原基准测试可能因主要测量进程启动开销而存在误导性,但即使改用perf_event_open配置计数器,再通过rdpmc在进程内对简单微基准测试采样,仍能观察到相同现象。

内容的提问来源于stack exchange,提问作者Joseph Garvin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 15:05:08