Re: [PATCH v1 0/5] x86/smp: Restore the elimination of mwait_play_dead_cpuid_hint()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2025-06-05 at 17:03 +0200, Rafael J. Wysocki wrote:
> Hi Everyone,
> 
> The purpose of this series is to reapply the code changes from commit
> 96040f7273e2 ("x86/smp: Eliminate mwait_play_dead_cpuid_hint()") that
> has been reverted because of an issue introduced by it.  This takes
> place in the last patch ([5/5]) and the previous patches make
> preparatory changes needed to avoid breaking systems in the field
> once again.

Hello,

thanks Rafael for the patches, and Peter/Dave for helping handling the
issue.

Tested-by: Artem Bityutskiy <artem.bityutskiy@xxxxxxxxxxxxxxx>

I measured a Granite Rapids Xeon with v6.15 vanilla [setup 1], then
with v6.15 + revert of 96040f7273e2 + these 5 patches [setup 2].

I can see that in setup 2 the average idle package power is 54% lower
than in setup 1. This is simply because in setup 1 there is no CC6 /
PC6. And this is because every core's sibling is in CC1, which blocks
CC6 on every core.

== Reference ==

1. Small article explaining then naming I use (CC1, CC6, PC6):
https://github.com/intel/pepc/blob/main/docs/misc-cstate-namespaces.md

== Non-essential details, just for reference ==

The measurement could have been done in a simpler way, but since I have
developed tools and have a good setup to measure workloads with my open
source tools, I did the following.

Used stats-collect: https://github.com/intel/stats-collect/

# Boot the vanilla kernel on system under test (SUT) named 'gnr2' (this
# is the host name). Then run the following command on my system, that
# has root SSH access to 'gnr2' configured.

stats-collect start --stats all -H gnr2 --reportid gnr2-idle-nosmt-
v6.15-vanilla -o raw/gnr2-idle-nosmt-v6.15-vanilla -- sleep 600

# The above SSHed to gnr2, ran workload "sleep 600", and collected a
# bunch of statistics, which were saved to
# raw/gnr2-idle-nosmt-v6.15-vanilla on my host.

# Boot the "setup 2" kernel, which I referred to as "6.15-fixed". Run
# the following command.

stats-collect start --stats all -H gnr2 --reportid gnr2-idle-nosmt-
v6.15-fixed -o raw/gnr2-idle-nosmt-v6.15-fixed -- sleep 600

# Then generate an HTML diff between those.
stats-collect report raw/gnr2-idle-nosmt-v6.15-vanilla/ raw/gnr2-idle-
nosmt-v6.15-fixed/ -o diff

# Open "diff" with a browser (I have my HTTP server, so just copied it
# to ~/public_html). Find lots of stats, in my case
# turbostat, interrupts, IPMI.

In the diff, I checked turbostat's PkgPwr (CPU chip power in Watts) and
turbostat's CPU%c6 (CC6 residency, %).

HTH,
Artem.





[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]
  Powered by Linux