[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <mq5nkqfyivbo2cbpcgr2pwz4iil2dcejbyxiynxvg34bgf4h5h@ixuoyqzn4qjc>
Date: Fri, 18 Oct 2024 16:06:11 +0530
From: Gautam Menghani <gautam@...ux.ibm.com>
To: Aboorva Devarajan <aboorvad@...ux.ibm.com>
Cc: rafael@...nel.org, daniel.lezcano@...aro.org, linux-pm@...r.kernel.org,
linux-kernel@...r.kernel.org, christian.loehle@....com
Subject: Re: [PATCH 1/1] cpuidle/menu: avoid prioritizing physical state over
polling state
On Fri, Aug 09, 2024 at 01:01:20PM GMT, Aboorva Devarajan wrote:
> Update the cpuidle menu governor to avoid prioritizing physical states
> over polling states when predicted idle duration is lesser than the
> physical states target residency duration for performance gains.
>
> Signed-off-by: Aboorva Devarajan <aboorvad@...ux.ibm.com>
> ---
> drivers/cpuidle/governors/menu.c | 11 -----------
> 1 file changed, 11 deletions(-)
>
> diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c
> index f3c9d49f0f2a..cf99ca103f9b 100644
> --- a/drivers/cpuidle/governors/menu.c
> +++ b/drivers/cpuidle/governors/menu.c
> @@ -354,17 +354,6 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev,
> idx = i; /* first enabled state */
>
> if (s->target_residency_ns > predicted_ns) {
> - /*
> - * Use a physical idle state, not busy polling, unless
> - * a timer is going to trigger soon enough.
> - */
> - if ((drv->states[idx].flags & CPUIDLE_FLAG_POLLING) &&
> - s->exit_latency_ns <= latency_req &&
> - s->target_residency_ns <= data->next_timer_ns) {
> - predicted_ns = s->target_residency_ns;
> - idx = i;
> - break;
> - }
> if (predicted_ns < TICK_NSEC)
> break;
>
> --
> 2.39.3
>
I tried to identify the number of times we enter the snooze and CEDE states
on a pseries machine with and without this patch applied while running
the daytrader database benchmark[1]. The results show that the number of
times we enter CEDE goes down considerably:
// Current upstream 6.11
| STATE | NO. OF TIMES ENTERED | TOTAL TIME SPENT IN STATE (US) | AVG TIME SPENT IN STATE (US) |
|Snooze | 6,389 | 221,592 | 34.68 |
| CEDE | 160,368 | 13,288,855 | 82.86 |
// Current upstream 6.11 - with above patch applied
| STATE | NO. OF TIMES ENTERED | TOTAL TIME SPENT IN STATE (US) | AVG TIME SPENT IN STATE (US) |
|Snooze | 140,267 | 6,400,073 | 45.63 |
| CEDE | 50,884 | 6,553,641 | 128.80 |
Above data was gathered with the help of power:cpu_idle tracepoint, and
was recorded for 45 secs while the daytrader benchmark was running.
[1] : https://github.com/WASdev/sample.daytrader7
Thanks,
Gautam
Powered by blists - more mailing lists