Xen ACPI - Precise SRU
Stefan Bader
stefan.bader at canonical.com
Wed Apr 25 11:47:00 UTC 2012
On 24.04.2012 20:47, Stefan Bader wrote:
> While looking into this a bit more I realized that the patch which
> modifies privcmd to provide a misc device interface is not needed
> at all to backport the cpufreq functionality. The only issues were
> Kconfig and Makefile in drivers/xen which could be resolved easily.
>
> So the remaining patches only make some smaller changes and add
> the new xen-acpi-processor driver (which only activates when in
> dom0). The greatly improves the unlikelyhood of regressions outside
> xen. It has not changed compared to before but it is simpler to
> see.
>
> The other modification I did was to make the xen-acpi-processor
> driver a built-in. It won't load outside dom0 but as a module it
> would require manual intervention and so its probably simpler to
> make it work right out of the box.
>
> So for testing:
> - On my usual Xen test box this does not work (only to the effect
> of the driver failing the acpi_processor_register_performance()
> call in init).
> Though this is not really expected (since the AMD Opteron has
> frequency scaling normally through powernow-k8) it does at least
> not make things worse. Before and after I am running at full
> speed.
> - On an Intel i7 box the driver works and I can see the frequencies
> changing through xenpm. Checking a Lucid and Precise HVM guest,
> those seem to be unaffected. Also without any visible problems
> was a Precise PVM guest. The only theoretical worry would
> be whether there is a chance the guest notices the cpu frequency
> changing and whether it cares if it would.
> - Also on the i7: I am not sure what to make of this output.
> For example for cpu#0 I get the following:
> Max C-state: C7
>
> cpu id : 0
> total C-states : 2
> idle time(ms) : 3315614
> C0 : transition [00000000000000000001]
> residency [00000000000000069798 ms]
> C1 : transition [00000000000000000001]
> residency [00000000000003315614 ms]
> pc3 : [00000000000000000000 ms]
> pc6 : [00000000000000000000 ms]
> pc7 : [00000000000000000000 ms]
> cc3 : [00000000000000000000 ms]
> cc6 : [00000000000000000000 ms]
>
> And gathering statistics there is also only the cpu cstates being
> used and the data for the socket looks like:
> Socket 0
> PC3 0 ms 0.00%
> PC6 0 ms 0.00%
> PC7 0 ms 0.00%
> Core 0 CPU 0
> CC3 0 ms 0.00%
> CC6 0 ms 0.00%
>
> Core 1 CPU 2
> CC3 0 ms 0.00%
> CC6 0 ms 0.00%
>
> Core 2 CPU 4
> CC3 0 ms 0.00%
> CC6 0 ms 0.00%
>
> Core 3 CPU 6
> CC3 0 ms 0.00%
> CC6 0 ms 0.00%
> Again it might be not as expected but at least the same as without
> the change.
>
> In summary, the frequency scaling improved at least on the i5, there was
> no change on the AMD Opteron (which might be a bug). The C-state handling
> seems unaffected (which may or may not be a bug) on both. At least the
> results are in all cases the same or better.
>
> We could SRU the new driver now and add fixes when we get them, or wait.
> Probably I should try to quantify the gain by running some more tests
> with a (not-cking-grade) power meter attached.
At least from what I can measure, I am not that much impressed by the change:
Native kernel: 175W
Xen without patchset: 183W (with a bit of good will maths 183.60W)
Xen with patchset: 183W (calculated 183.08W)
So any difference may just be my poor meter which only resolves 1W and 1/100h
and those on two screens I have to switch between taking the values. Or not
really much more than 0.9W on a 4 core i7.
I would suspect that the output of xenpm really does mean that C3 and C6 are not
used and that doing so would give a higher power saving.
With that I would say in this form there does not seem to be such a huge benefit
from backporting the changes. I would contact Xen upstream and try to find out
what is a) wrong with the AMD Opteron and b) whether the way the c-states are
used is as it is expected.
-Stefan
>
> -Stefan
>
> The following changes since commit 7885fb139c30858f3a7d8700b44b788a5c931198:
>
> Linux 3.2.16 (2012-04-23 09:13:23 -0600)
>
> are available in the git repository at:
>
> git://kernel.ubuntu.com/smb/ubuntu-precise.git xen-acpi
>
> for you to fetch changes up to 641bfd4d37224761d5dffa5f1bec17dc6da07556:
>
> xen/cpufreq: Disable the cpu frequency scaling drivers from loading. (2012-04-24 18:54:26 +0200)
>
> ----------------------------------------------------------------
> Konrad Rzeszutek Wilk (6):
> provide disable_cpufreq() function to disable the API.
> xen/acpi-processor: C and P-state driver that uploads said data to hypervisor.
> xen/acpi-processor: Do not depend on CPU frequency scaling drivers.
> xen/acpi: Fix Kconfig dependency on CPU_FREQ
> xen/acpi: Remove the WARN's as they just create noise.
> xen/cpufreq: Disable the cpu frequency scaling drivers from loading.
>
> Tim Gardner (1):
> UBUNTU: [Config] CONFIG_XEN_ACPI_PROCESSOR=y
>
> arch/x86/xen/setup.c | 2 +
> debian.master/config/config.common.ubuntu | 1 +
> drivers/cpufreq/cpufreq.c | 24 ++
> drivers/xen/Kconfig | 17 +
> drivers/xen/Makefile | 2 +-
> drivers/xen/xen-acpi-processor.c | 562 +++++++++++++++++++++++++++++
> include/linux/cpufreq.h | 2 +
> include/xen/interface/platform.h | 17 +
> 8 files changed, 626 insertions(+), 1 deletion(-)
> create mode 100644 drivers/xen/xen-acpi-processor.c
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 900 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20120425/50693bf7/attachment.sig>
More information about the kernel-team
mailing list