lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<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

Powered by Openwall GNU/*/Linux Powered by OpenVZ