Xen ACPI - Precise SRU
Stefan Bader
stefan.bader at canonical.com
Wed Apr 25 12:18:14 UTC 2012
On 25.04.2012 13:47, Stefan Bader wrote:
> 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.
>
Hm, ok, the main reasoning in the bug report is that with cpufreq management,
the cpu can use turbo-mode. How useful this is iirc also does not only depend on
the frequency but also on how many cores are in c3 (or deeper).
But also this would require a different approach in testing. I'd need to pin a
guest to use a single cpu and find something to measure the cpu performance. And
then compare the two kernels.
> -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/7240efd2/attachment.sig>
More information about the kernel-team
mailing list