public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: Shaohua Li <shaohua.li@intel.com>
Cc: linux-acpi@vger.kernel.org, svaidy@linux.vnet.ibm.com,
	tglx@linutronix.de, lenb@kernel.org,
	venkatesh.pallipadi@intel.com, andi@firstfloor.org,
	Ingo Molnar <mingo@elte.hu>
Subject: Re: [PATCH]new ACPI processor driver to force CPUs idle
Date: Wed, 24 Jun 2009 08:39:18 +0200	[thread overview]
Message-ID: <1245825558.19816.1861.camel@twins> (raw)
In-Reply-To: <20090624041354.GA15936@sli10-desk.sh.intel.com>

On Wed, 2009-06-24 at 12:13 +0800, Shaohua Li wrote:
> This patch supports the processor aggregator device. When OS gets one ACPI
> notification, the driver will idle some number of cpus.
> 
> To make CPU idle, the patch will create power saving thread. Scheduler
> will migrate the thread to preferred CPU. The thread has max priority and
> has SCHED_RR policy, so it can occupy one CPU. To save power, the thread will
> keep calling C-state instruction. Routine power_saving_thread() is the entry
> of the thread.
> 
> To avoid starvation, the thread will sleep 5% time for every second
> (current RT scheduler has threshold to avoid starvation, but if other
> CPUs are idle, the CPU can borrow CPU timer from other, so makes the mechanism
> not work here)
> 
> This approach (to force CPU idle) should hasn't impact to scheduler and tasks
> with affinity still can get chance to run even the tasks run on idled cpu. Any
> comments/suggestions are welcome.

> +static int power_saving_thread(void *data)
> +{
> +	struct sched_param param = {.sched_priority = MAX_RT_PRIO - 1};
> +	int do_sleep;
> +
> +	/*
> +	 * we just create a RT task to do power saving. Scheduler will migrate
> +	 * the task to any CPU.
> +	 */
> +	sched_setscheduler(current, SCHED_RR, &param);
> +

This is crazy and wrong.

1) cpusets can be so configured as to not have the full machine in a
single load-balance domain, eg. the above comment about the scheduler is
false.

2) you're running at MAX_RT_PRIO-1, this will mightily upset the
migration thread and kstopmachine bits.

3) you're going to starve RT processes by being of a higher priority,
even though you might gain enough idle time by simply moving SCHED_OTHER
tasks around.

4) you're introducing 57s latencies to processes that happen to get
scheduled on whatever CPU you end up on, not nice.

NACK


  reply	other threads:[~2009-06-24  6:56 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-24  4:13 [PATCH]new ACPI processor driver to force CPUs idle Shaohua Li
2009-06-24  6:39 ` Peter Zijlstra [this message]
2009-06-24  7:47   ` Shaohua Li
2009-06-24  8:03     ` Peter Zijlstra
2009-06-24  8:21       ` Shaohua Li
2009-06-26 18:16         ` Vaidyanathan Srinivasan
2009-06-29  2:54           ` Shaohua Li
2009-07-06 18:03             ` Vaidyanathan Srinivasan
2009-07-06 23:43               ` Andi Kleen
2009-07-07  0:50                 ` Pallipadi, Venkatesh
2009-07-10 19:31               ` Len Brown
2009-06-24 17:20       ` Len Brown
2009-06-26  7:46         ` Peter Zijlstra
2009-06-26 16:46           ` Len Brown
2009-06-26 18:42             ` Vaidyanathan Srinivasan
2009-07-10 19:47               ` Len Brown
2009-06-26 19:49             ` Matthew Garrett
2009-07-10 20:29               ` Len Brown
2009-06-30  8:02             ` Shaohua Li
2009-07-07  8:26               ` Peter Zijlstra
2009-07-07  8:24             ` Peter Zijlstra
2009-07-10 20:41               ` 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=1245825558.19816.1861.camel@twins \
    --to=a.p.zijlstra@chello.nl \
    --cc=andi@firstfloor.org \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=shaohua.li@intel.com \
    --cc=svaidy@linux.vnet.ibm.com \
    --cc=tglx@linutronix.de \
    --cc=venkatesh.pallipadi@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