> > > 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