提交 3316f99a 编写于 作者: C Calvin Walton 提交者: Len Brown

tools/power turbostat: Also read package power on AMD F17h (Zen)

The package power can also be read from an MSR. It's not clear exactly
what is included, and whether it's aggregated over all nodes or
reported separately.

It does look like this is reported separately per CCX (I get a single
value on the Ryzen R7 1700), but it might be reported separately per-
die (node?) on larger processors. If that's the case, it would have to
be recorded per node and aggregated for the socket.

Note that although Zen has these MSRs reporting power, it looks like
the actual RAPL configuration (power limits, configured TDP) is done
through PCI configuration space. I have not yet found any public
documentation for this.
Signed-off-by: NCalvin Walton <calvin.walton@kepstin.ca>
Signed-off-by: NLen Brown <len.brown@intel.com>
上级 9392bd98
...@@ -1985,6 +1985,11 @@ int get_counters(struct thread_data *t, struct core_data *c, struct pkg_data *p) ...@@ -1985,6 +1985,11 @@ int get_counters(struct thread_data *t, struct core_data *c, struct pkg_data *p)
return -16; return -16;
p->rapl_dram_perf_status = msr & 0xFFFFFFFF; p->rapl_dram_perf_status = msr & 0xFFFFFFFF;
} }
if (do_rapl & RAPL_AMD_F17H) {
if (get_msr(cpu, MSR_PKG_ENERGY_STAT, &msr))
return -13;
p->energy_pkg = msr & 0xFFFFFFFF;
}
if (DO_BIC(BIC_PkgTmp)) { if (DO_BIC(BIC_PkgTmp)) {
if (get_msr(cpu, MSR_IA32_PACKAGE_THERM_STATUS, &msr)) if (get_msr(cpu, MSR_IA32_PACKAGE_THERM_STATUS, &msr))
return -17; return -17;
...@@ -3979,10 +3984,13 @@ void rapl_probe_amd(unsigned int family, unsigned int model) ...@@ -3979,10 +3984,13 @@ void rapl_probe_amd(unsigned int family, unsigned int model)
switch (family) { switch (family) {
case 0x17: /* Zen, Zen+ */ case 0x17: /* Zen, Zen+ */
do_rapl = RAPL_AMD_F17H | RAPL_PER_CORE_ENERGY; do_rapl = RAPL_AMD_F17H | RAPL_PER_CORE_ENERGY;
if (rapl_joules) if (rapl_joules) {
BIC_PRESENT(BIC_Pkg_J);
BIC_PRESENT(BIC_Cor_J); BIC_PRESENT(BIC_Cor_J);
else } else {
BIC_PRESENT(BIC_PkgWatt);
BIC_PRESENT(BIC_CorWatt); BIC_PRESENT(BIC_CorWatt);
}
break; break;
default: default:
return; return;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册