http://bugzilla.opensuse.org/show_bug.cgi?id=1190871 http://bugzilla.opensuse.org/show_bug.cgi?id=1190871#c13 --- Comment #13 from Anthony Agelastos <iqgrande@gmail.com> --- (In reply to Giovanni Gherdovich from comment #10)
Hello,
before getting into the detail of this report I need to clarify the difference between two kinds of frequency measurements: average frequency over active time (also called "BusyMHz") and average frequency over entire time (or "AvgMHz").
* BusyMHz: a CPU can be active, i.e. executing instructions (this is called "CO State") or switched off, inactive. There are several inctive states, called C1, C2, C3 etc. depending on how big of a portion of a CPU is taken offline. A CPU enters an inactive state to save energy; when in such state, it isn't executing anything and we can say the clock frequency is zero. BusyMHz is the average clock frequency (during the sampled interval) if we only consider C0 time, and dismiss all the time that's spent in all other C-States. You can be idling a lot (lots of non-C0 time) and still have a high BusyMHz, simply because of some brief activity spike (eg. processing interrupts). When the machine is not under load what's important is that AvgMHz is low, see next item.
* AvgMHz: if we include all the non-C0 time (during which the CPU was powered off to some extent) in our average frequency calculation, we get AvgMHz. When not under load, this is expected to be near zero.
Your measurement before and after the change were done using lscpu; there are two problems with that:
1. lscpu measures BusyMHz; the sampling time is very brief (less than 10 ms). This is not a good indication of "cpu is spinning fast even if I not doing anything". Again, BusyMHz can be high even if the machine is not under load.
2. lscpu only shows BusyMHz for the first cpu, CPU#0. It seems like this is an Intel CPU and I expect it to have multiple cores; the reason for the change in lscpu output could simply be something that used to be processed elsewhere is now processed on CPU#0. Without data on the full set of CPUs, we can't tell.
Regarding how to measure the CPU frequency, the designated tool is turbostat(8), which in openSUSE is packaged in the cpupower package.
Please run (as root) the following:
turbostat --interval 1
This will sample all the data that's needed at intervals of 1 second, especially AvgMHz and BusyMHz from above, and Busy% which will tell the percentage of C0 time with respect to the total.
What we want for an idle system is low values of AvgMHz and Busy%. Please let turbostat run for a minute or so, save the entire output and post as an attachment (including the header information, which shows a number of power-management related indicators).
Also please show the entire `lscpu` output for information on the CPU model.
Thanks,
Thank you for such a wonderful post. I love learning more about Linux and this certainly helped. I provided everything you asked for. I just wanted to mention that I really, really appreciate your help with this and your willingness to explain these items to me. Thank you for your help with this. -- You are receiving this mail because: You are on the CC list for the bug.