public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
From: Len Brown <lenb@kernel.org>
To: "Pallipadi, Venkatesh" <venkatesh.pallipadi@intel.com>
Cc: linux-acpi@vger.kernel.org, yakui.zhao@intel.com
Subject: Re: [PATCH] Add decaying history logic to cpuidle menu idle predictor
Date: Tue, 30 Dec 2008 18:48:30 -0500 (EST)	[thread overview]
Message-ID: <alpine.LFD.2.00.0812301848220.17126@localhost.localdomain> (raw)
In-Reply-To: <20081230224602.GA6898@linux-os.sc.intel.com>

applied

-- Len Brown, Intel Open Source Technology Center

On Tue, 30 Dec 2008, Pallipadi, Venkatesh wrote:

> 
> Add decaying history of predicted idle time, instead of using the last early
> wakeup. This logic helps menu governor do better job of predicting idle time.
> 
> With this change, we also measured noticable (~8%) power savings on
> a DP server system with CPUs supporting deep C states, when system
> was lightly loaded. There was no change to power or perf on other load
> conditions.
> 
> Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
> 
> ---
>  drivers/cpuidle/governors/menu.c |   10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> Index: linux-2.6/drivers/cpuidle/governors/menu.c
> ===================================================================
> --- linux-2.6.orig/drivers/cpuidle/governors/menu.c	2008-11-10 15:27:13.000000000 -0800
> +++ linux-2.6/drivers/cpuidle/governors/menu.c	2008-12-30 14:39:15.000000000 -0800
> @@ -15,12 +15,14 @@
>  #include <linux/tick.h>
>  
>  #define BREAK_FUZZ	4	/* 4 us */
> +#define PRED_HISTORY_PCT	50
>  
>  struct menu_device {
>  	int		last_state_idx;
>  
>  	unsigned int	expected_us;
>  	unsigned int	predicted_us;
> +	unsigned int    current_predicted_us;
>  	unsigned int	last_measured_us;
>  	unsigned int	elapsed_us;
>  };
> @@ -47,6 +49,12 @@ static int menu_select(struct cpuidle_de
>  	data->expected_us =
>  		(u32) ktime_to_ns(tick_nohz_get_sleep_length()) / 1000;
>  
> +	/* Recalculate predicted_us based on prediction_history_pct */
> +	data->predicted_us *= PRED_HISTORY_PCT;
> +	data->predicted_us += (100 - PRED_HISTORY_PCT) *
> +				data->current_predicted_us;
> +	data->predicted_us /= 100;
> +
>  	/* find the deepest idle state that satisfies our constraints */
>  	for (i = CPUIDLE_DRIVER_STATE_START + 1; i < dev->state_count; i++) {
>  		struct cpuidle_state *s = &dev->states[i];
> @@ -97,7 +105,7 @@ static void menu_reflect(struct cpuidle_
>  		measured_us = -1;
>  
>  	/* Predict time until next break event */
> -	data->predicted_us = max(measured_us, data->last_measured_us);
> +	data->current_predicted_us = max(measured_us, data->last_measured_us);
>  
>  	if (last_idle_us + BREAK_FUZZ <
>  	    data->expected_us - target->exit_latency) {
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

  reply	other threads:[~2008-12-30 23:49 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-30 22:46 [PATCH] Add decaying history logic to cpuidle menu idle predictor Pallipadi, Venkatesh
2008-12-30 23:48 ` Len Brown [this message]
2008-12-31  1:27 ` Zhao Yakui
2008-12-31 19:46   ` Pallipadi, Venkatesh
2008-12-31 19:58     ` Len Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.LFD.2.00.0812301848220.17126@localhost.localdomain \
    --to=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=venkatesh.pallipadi@intel.com \
    --cc=yakui.zhao@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox