Re: [PATCH v4 06/22] cpufreq: amd: introduce a new amd pstate driver to support future processors

From: Giovanni Gherdovich
Date: Thu Nov 25 2021 - 10:06:05 EST


On Fri, 2021-11-19 at 18:30 +0800, Huang Rui wrote:
> <snip>
>
> Performance Per Watt (PPW) Calculation:
>
> The PPW calculation is referred by below paper:
> https://software.intel.com/content/dam/develop/external/us/en/documents/performance-per-what-paper.pdf
>
> Below formula is referred from below spec to measure the PPW:
>
> (F / t) / P = F * t / (t * E) = F / E,
>
> "F" is the number of frames per second.
> "P" is power measured in watts.
> "E" is energy measured in joules.

Hello, I'd appreciate if you can remove the reference to the above paper and
formula, because it is not really relevant to this context, and ends up being
confusing.

It describes performance per watt tailored to graphics benchmarks, in the form
of frames per joule. Nothing wrong with that, but it only works for tests that
measure frames per second, and none of the tests below is of that type.

You have:

- tbench measures throughput (MB/sec)
- gitsource, aka run the git test suite, measures elapsed time
- speedometer, a web browser test that gives "runs per minute"

If you want performance per watt, you need to express your result as
"operations per second", where "operations" is up to you to define. For
tbench, one "operation" is moving a MB of data. For speedometer, one
"operation" is one "run", as defined in the benchmark. Once you have op/sec
(aka performance), divide by the average power measured over the entire
duration of the benchmark.

In cases like gitsource, where you have elapsed_time as a result, performance
per watt is 1 / (elapsed_time * average_power).

> We use the RAPL interface with "perf" tool to get the energy data of the
> package power.
>
> The data comparisons between amd-pstate and acpi-freq module are tested on
> AMD Cezanne processor:
>
> 1) TBench CPU benchmark:
>
> +---------------------------------------------------------------------+
> > |
> > TBench (Performance Per Watt) |
> > Higher is better |
> +-------------------+------------------------+------------------------+
> > | Performance Per Watt | Performance Per Watt |
> > Kernel Module | (Schedutil) | (Ondemand) |
> > | Unit: MB / (s * J) | Unit: MB / (s * J) |

The unit "MB / (s * J)" doesn't really work, it should be "MB / (sec * watt)".
Can you double check that you divided the performance result by the average
power? Same for the other tests.

It is also relevant to show performance, alongside with perf-per-watt.


Thanks!
Giovanni