Re: [linus:master] [xfs] 2edf06a50f: fsmark.files_per_sec -5.7% regression

From: Zhang, Rui
Date: Mon May 15 2023 - 23:08:07 EST



> > > Also for the turbostat.Bzy_MHz diff, IIUC, 0Day always uses
> > > 'performance' cpufreq governor. And as the test case is running
> > > 32 thread in a platform with 96 CPUs, there are many CPUs in idle
> > > state in average, and I suspect the Bzy_MHz may be calculated
> > > considering those cpufreq and cpuidle factors.
> >
> > If "busy MHz" includes the speed of idle CPUs, then it's not really
> > a measure of the speed of "busy" CPUs. If what you say is true,
> > then
> > it is, at best, badly names - it would just be the "average Mhz",
> > right?
>
> I found the turbostat.c in kernel tree tools/power/x86/turbostat/
>
> if (DO_BIC(BIC_Bzy_MHz)) {
> if (has_base_hz)
> outp +=
> sprintf(outp, "%s%.0f", (printed++ ? delim : ""),
> base_hz / units * t->aperf / t->mperf);
> else
> outp += sprintf(outp, "%s%.0f", (printed++ ? delim :
> ""),
> tsc / units * t->aperf / t->mperf /
> interval_float);
> }
>
> Rui Zhang told me the 'aperf' is the actual cpu cycles of a CPU in a
> period of time, and it only count when CPU is in C0 state, and will
> stop counting when cpu is in idle power state. Like in one second
> interval, if the CPU spends 500 ms running at 1000 MHz, and the other
> 500 ms in idle, then the Bzy_MHz will be shown 500 MHz.

Bzy_MHz will show 1000 MHz because it is the actual frequency when CPU
is in C0.
Avg_MHz will show 500 MHz because it is the average frequency including
the CPU idle time.

thanks,
rui