[PATCH v2] powerpc/cpuidle: Set CPUIDLE_FLAG_POLLING for snooze state
Vishal Chourasia
vishalc at linux.vnet.ibm.com
Sat Nov 19 19:49:52 AEDT 2022
On Mon, Nov 14, 2022 at 08:26:11PM +0530, Aboorva Devarajan wrote:
> During the comparative study of cpuidle governors, it is noticed that the
> menu governor does not select CEDE state in some scenarios even though when
> the sleep duration of the CPU exceeds the target residency of the CEDE idle
> state this is because the CPU exits the snooze "polling" state when snooze
> time limit is reached in the snooze_loop(), which is not a real wake up
> and it just means that the polling state selection was not adequate.
>
> cpuidle governors rely on CPUIDLE_FLAG_POLLING flag to be set for the
> polling states to handle the condition mentioned above.
>
> Hence, set the CPUIDLE_FLAG_POLLING flag for snooze state (polling state)
> in powerpc arch to make the cpuidle governor work as expected.
>
> Reference Commits:
>
> - Timeout enabled for snooze state:
> commit 78eaa10f027c
> ("cpuidle: powernv/pseries: Auto-promotion of snooze to deeper idle state")
>
> - commit dc2251bf98c6
> ("cpuidle: Eliminate the CPUIDLE_DRIVER_STATE_START symbol")
>
> - Fix wakeup stats in governor for polling states
> commit 5f26bdceb9c0
> ("cpuidle: menu: Fix wakeup statistics updates for polling state")
>
> Signed-off-by: Aboorva Devarajan <aboorvad at linux.vnet.ibm.com>
> ---
>
> Changelog: (v1 -> v2)
>
> Added CPUIDLE_POLLING_FLAG to the correct cpuidle_state struct.
>
> Previous version of the patch is stale which was sent by mistake, this
> is the correct version which is tested on powernv, pseries (shared and
> dedicated partitions)
>
> drivers/cpuidle/cpuidle-powernv.c | 5 ++++-
> drivers/cpuidle/cpuidle-pseries.c | 8 ++++++--
> 2 files changed, 10 insertions(+), 3 deletions(-)
Thanks for the patch.
Tested it on top of v6.0-rc4
Against workload: https://github.com/gautshen/misc/tree/master/cpuidle-smt-performance
Reviewed-by: Vishal Chourasia <vishalc at linux.vnet.ibm.com>
Tested-by: Vishal Chourasia <vishalc at linux.vnet.ibm.com <mailto:vishalc at linux.vnet.ibm.com>>
|----------------+--------+-----------------------+----------------------|
| wake up period | state | % time spent (before) | % time spent (after) |
|----------------+--------+-----------------------+----------------------|
| 110 us | snooze | 95.40 % | 1.17 % |
| | CEDE | 0.03 % | 92.67 % |
|----------------+--------+-----------------------+----------------------|
| 120 us | snooze | 96.37 % | 1.18 % |
| | CEDE | 0.05 % | 94.57 % |
|----------------+--------+-----------------------+----------------------|
| 130 us | snooze | 17.12 % | 1.21 % |
| | CEDE | 78.16 % | 94.71 % |
|----------------+--------+-----------------------+----------------------|
| 230 us | snooze | 95.38 % | 0.64 % |
| | CEDE | 2.55 % | 97.06 % |
|----------------+--------+-----------------------+----------------------|
| 240 us | snooze | 96.86 % | 0.62 % |
| | CEDE | 1.14 % | 97.17 % |
|----------------+--------+-----------------------+----------------------|
| 250 us | snooze | 1.38 % | 0.59 % |
| | CEDE | 96.46 % | 97.28 % |
|----------------+--------+-----------------------+----------------------|
| 350 us | snooze | 62.91 % | 0.42 % |
| | CEDE | 35.56 % | 98.04 % |
|----------------+--------+-----------------------+----------------------|
| 360 us | snooze | 11.93 % | 0.34 % |
| | CEDE | 86.56 % | 98.18 % |
|----------------+--------+-----------------------+----------------------|
| 370 us | snooze | 6.21 % | 0.40 % |
| | CEDE | 92.31 % | 98.16 % |
|----------------+--------+-----------------------+----------------------|
| 470 us | snooze | 42.06 % | 0.31 % |
| | CEDE | 56.74 % | 98.54 % |
|----------------+--------+-----------------------+----------------------|
| 480 us | snooze | 64.67 % | 0.30 % |
| | CEDE | 34.14 % | 98.56 % |
|----------------+--------+-----------------------+----------------------|
| 490 us | snooze | 0.57 % | 0.30 % |
| | CEDE | 98.31 % | 98.60 % |
|----------------+--------+-----------------------+----------------------|
Note: *before* and *after* (see table heading), simply mean before applying the
patch and after applying the patch
-- vishal.c
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20221119/468a32d1/attachment.sig>
More information about the Linuxppc-dev
mailing list