From: Ingo Molnar <mingo@kernel.org>
To: Jacob Pan <jacob.jun.pan@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>,
John Stultz <john.stultz@linaro.org>,
LKML <linux-kernel@vger.kernel.org>,
Arjan van de Ven <arjan@linux.intel.com>,
Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>,
Len Brown <len.brown@intel.com>,
Rafael Wysocki <rafael.j.wysocki@intel.com>,
Eduardo Valentin <edubezval@gmail.com>,
Paul Turner <pjt@google.com>
Subject: Re: [PATCH 3/4] sched: introduce synchronized idle injection
Date: Wed, 18 Nov 2015 09:36:22 +0100 [thread overview]
Message-ID: <20151118083622.GA25217@gmail.com> (raw)
In-Reply-To: <1447444387-23525-4-git-send-email-jacob.jun.pan@linux.intel.com>
* Jacob Pan <jacob.jun.pan@linux.intel.com> wrote:
> With increasingly constrained power and thermal budget, it's often necessary to
> cap power via throttling. Throttling individual CPUs or devices at random times
> can help power capping but may not be optimal in terms of energy efficiency.
> Frequency scaling is also limited by certain range before losing energy
> efficiency.
>
> In general, the optimal solution in terms of energy efficiency is to align idle
> periods such that more shared circuits can be power gated to enter lower power
> states. Combined with energy efficient frequency point, idle injection provides
> a way to scale power and performance efficiently.
>
> This patch introduces a scheduler based idle injection method, it works by
> blocking CFS runqueue synchronously and periodically. The actions on all online
> CPUs are orchestrated by per CPU hrtimers.
>
> Two sysctl knobs are given to the userspace for selecting the
> percentage of idle time as well as the forced idle duration for each
> idle period injected.
What's the purpose of these knobs? Just testing, or will some user-space daemon
set them dynamically?
I.e. what mechanism will drive the throttling in the typical case?
> Since only CFS class is targeted, other high priority tasks are not affected,
> such as EDF and RT tasks as well as softirq and interrupts.
>
> Hotpath in CFS pick_next_task is optimized by Peter Zijlstra, where a new
> runnable flag is introduced to combine forced idle and nr_running.
> +config CFS_IDLE_INJECT
> + bool "Synchronized CFS idle injection"
> + depends on NO_HZ_IDLE && HIGH_RES_TIMERS
> + default n
> + help
> + This feature let scheduler inject synchronized idle time across all online
> + CPUs. Idle injection affects normal tasks only, yeilds to RT and interrupts.
> + Effecitvely, CPUs can be duty cycled between running at the most power
> + efficient performance state and deep idle states.
So there are 3 typos in this single paragraph alone ...
I also think that naming it 'idle injection' is pretty euphemistic: this is forced
idling, right? So why not name it CFS_FORCED_IDLE?
What will such throttling do to latencies, as observed by user-space tasks? What's
the typical expected frequency of the throttling frequency that you are targeting?
Thanks,
Ingo
next prev parent reply other threads:[~2015-11-18 8:36 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-13 19:53 [PATCH 0/4] CFS idle injection Jacob Pan
2015-11-13 19:53 ` [PATCH 1/4] ktime: add a roundup function Jacob Pan
2015-11-13 20:11 ` John Stultz
2015-11-13 22:33 ` Jacob Pan
2015-11-13 20:13 ` Thomas Gleixner
2015-11-13 22:36 ` Jacob Pan
2015-11-13 19:53 ` [PATCH 2/4] timer: relax tick stop in idle entry Jacob Pan
2015-11-13 20:22 ` Thomas Gleixner
2015-11-13 22:24 ` Jacob Pan
2015-11-16 15:06 ` Thomas Gleixner
2015-11-16 21:51 ` Jacob Pan
2015-11-16 22:01 ` Thomas Gleixner
2015-11-17 0:09 ` Jacob Pan
2015-11-19 17:43 ` Jacob Pan
2015-11-19 19:06 ` Peter Zijlstra
2015-11-19 19:21 ` Jacob Pan
2015-11-19 19:59 ` Peter Zijlstra
2015-11-19 23:41 ` Jacob Pan
2015-11-16 22:31 ` Paul E. McKenney
2015-11-16 23:05 ` Jacob Pan
2015-11-16 23:15 ` Jacob Pan
2015-11-16 23:28 ` Paul E. McKenney
2015-11-16 23:32 ` Arjan van de Ven
2015-11-16 23:40 ` Jacob Pan
2015-11-17 0:00 ` Paul E. McKenney
2015-11-16 22:32 ` Josh Triplett
2015-11-16 23:26 ` Paul E. McKenney
2015-11-17 1:41 ` Josh Triplett
2015-11-17 2:53 ` Paul E. McKenney
2015-11-17 2:57 ` Arjan van de Ven
2015-11-17 5:04 ` Paul E. McKenney
2015-11-17 10:24 ` Peter Zijlstra
2015-11-17 12:57 ` Jacob Pan
2015-11-17 13:49 ` Paul E. McKenney
2015-11-13 19:53 ` [PATCH 3/4] sched: introduce synchronized idle injection Jacob Pan
2015-11-13 20:23 ` kbuild test robot
2015-11-18 8:36 ` Ingo Molnar [this message]
2015-11-18 10:35 ` Peter Zijlstra
2015-11-18 12:27 ` Morten Rasmussen
2015-11-18 12:49 ` Peter Zijlstra
2015-11-18 14:04 ` Morten Rasmussen
2015-11-18 14:52 ` Jacob Pan
2015-11-18 15:09 ` Morten Rasmussen
2015-11-18 15:11 ` Jacob Pan
2015-11-18 15:21 ` Thomas Gleixner
2015-11-18 17:03 ` Jacob Pan
2015-11-18 16:04 ` Morten Rasmussen
2015-11-27 9:17 ` Ingo Molnar
2015-11-18 14:10 ` Jacob Pan
2015-11-27 9:17 ` Ingo Molnar
2015-12-02 17:28 ` Jacob Pan
2015-11-18 14:19 ` Arjan van de Ven
2015-11-18 15:44 ` Morten Rasmussen
2015-11-18 15:51 ` Arjan van de Ven
2015-11-19 17:24 ` Morten Rasmussen
2015-11-19 20:09 ` Peter Zijlstra
2015-11-20 9:45 ` Thomas Gleixner
2015-11-20 10:20 ` Peter Zijlstra
2015-11-20 10:58 ` Thomas Gleixner
2015-11-20 12:54 ` Peter Zijlstra
2015-11-20 18:53 ` Thomas Gleixner
2016-01-11 21:50 ` Jacob Pan
2016-01-19 12:06 ` Ingo Molnar
2016-01-19 18:00 ` Jacob Pan
2015-11-24 11:38 ` Jacob Pan
2015-11-23 17:59 ` Jacob Pan
2015-11-23 17:56 ` Javi Merino
2015-11-23 18:07 ` Peter Zijlstra
2015-11-24 9:12 ` Javi Merino
2015-11-24 10:09 ` Peter Zijlstra
2015-11-24 11:10 ` Jacob Pan
2015-11-24 12:00 ` Javi Merino
2015-11-24 18:22 ` Jacob Pan
2015-11-25 9:41 ` Javi Merino
2015-11-13 19:53 ` [PATCH 4/4] sched: add trace event for " Jacob Pan
2015-11-13 20:10 ` kbuild test robot
2015-11-19 14:39 ` Javi Merino
2015-11-19 15:35 ` Jacob Pan
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=20151118083622.GA25217@gmail.com \
--to=mingo@kernel.org \
--cc=arjan@linux.intel.com \
--cc=edubezval@gmail.com \
--cc=jacob.jun.pan@linux.intel.com \
--cc=john.stultz@linaro.org \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=rafael.j.wysocki@intel.com \
--cc=srinivas.pandruvada@linux.intel.com \
--cc=tglx@linutronix.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.