Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1231435

Re: [RFC 0/3] sched/idle: run-time support for setting idle polling

From Luiz Capitulino <lcapitulino@redhat.com>
Newsgroups linux.kernel
Subject Re: [RFC 0/3] sched/idle: run-time support for setting idle polling
Date 2015-09-23 15:30 +0200
Message-ID <qbShr-5pG-7@gated-at.bofh.it> (permalink)
References <qbCw1-7OJ-3@gated-at.bofh.it> <qbGzD-59T-9@gated-at.bofh.it>
Organization Red Hat

Show all headers | View raw


On Wed, 23 Sep 2015 03:17:59 +0200
"Rafael J. Wysocki" <rjw@rjwysocki.net> wrote:

> On Tuesday, September 22, 2015 04:34:19 PM Luiz Capitulino wrote:
> > Hi,
> 
> Hi,
> 
> Please always CC patches related to power management to linux-pm@vger.kernel.org.
> 
> Also CCing Len Brown who's the maintainer of the intel_idle driver and Peter Z.
> 
> > Some archs allow the system administrator to set the
> > idle thread behavior to spin instead of entering
> > sleep states. The x86 arch, for example, has a idle=
> > command-line parameter for this purpose.
> > 
> > However, the command-line parameter has two problems:
> > 
> >  1. You have to reboot if you change your mind
> >  2. This setting affects all system cores
> > 
> > The second point is relevant for systems where cores
> > are partitioned into bookkeeping and low-latency cores.
> > Usually, it's OK for bookkeeping cores to enter deeper
> > sleep states. It's only the low-latency cores that should
> > poll when entering idle.
> 
> This looks like a use case for PM QoS to me rather.  You'd need to make it
> work per-CPU rather than globally, but that really is about asking for
> minimum latency.

Yes, wake up latency. But that feature is already there, I'm just making
it a run-time tunable.

> > This series adds the following file:
> > 
> >  /sys/devices/system/cpu/cpu_idle
> > 
> > This file outputs and stores a cpumask of the cores
> > which will have idle polling behavior.
> 
> I don't like this interface at all.
> 
> You have a cpuidle directory per core already, so what's the reason to add an
> extra mask file really? 

If there's consensus that this is the right thing to do, I'd do it.

However, idle polling behavior is a idle thread parameter which is a
core kernel component not tied to drivers. In this case, it would
make more sense to add a idle_thread dir to sysfs so that future
idle thread parameters can be added there.

> > This implementation seems to work fine on x86, however
> > it's RFC because of the following points (for which
> > feedback is greatly appreciated):
> > 
> >  o I believe this implementation should work for all archs,
> >    but I can't confirm it as my machines and experience is
> >    limited to x86
> > 
> >  o Some x86 cpufreq drivers explicitly check if idle=poll
> >    was passed. Does anyone know if this is an optmization
> >    or is there actually a conflict between idle=poll and
> >    driver operation?
> 
> idle=poll is used as a workaround for platform defects on some systems IIRC.

Oh, makes sense.

> 
> >  o This series maintains cpu_idle_poll_ctrl() semantics
> >    which led to a more complex implementation. That is, today
> >    cpu_idle_poll_ctrl() increments or decrements a counter.
> >    A lot of arch code seems to count on this semantic, where
> >    cpu_idle_poll_ctrl(enable or false) calls have to match to
> >    enable or disable idle polling
> > 
> > Luiz Capitulino (3):
> >   sched/idle: cpu_idle_poll(): drop unused return code
> >   sched/idle: make cpu_idle_force_poll per-cpu
> >   sched/idle: run-time support for setting idle polling
> > 
> >  drivers/base/cpu.c  | 44 ++++++++++++++++++++++++
> >  include/linux/cpu.h |  2 ++
> >  kernel/sched/idle.c | 96 +++++++++++++++++++++++++++++++++++++++++++++--------
> >  3 files changed, 129 insertions(+), 13 deletions(-)
> 
> Thanks,
> Rafael
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

[RFC 0/3] sched/idle: run-time support for setting idle polling Luiz Capitulino <lcapitulino@redhat.com> - 2015-09-22 22:40 +0200
  [RFC 3/3] sched/idle: run-time support for setting idle polling Luiz Capitulino <lcapitulino@redhat.com> - 2015-09-22 22:40 +0200
  Re: [RFC 0/3] sched/idle: run-time support for setting idle polling "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2015-09-23 03:00 +0200
    Re: [RFC 0/3] sched/idle: run-time support for setting idle polling Luiz Capitulino <lcapitulino@redhat.com> - 2015-09-23 15:30 +0200
    Re: [RFC 0/3] sched/idle: run-time support for setting idle polling Peter Zijlstra <peterz@infradead.org> - 2015-09-30 18:00 +0200
      Re: [RFC 0/3] sched/idle: run-time support for setting idle polling Luiz Capitulino <lcapitulino@redhat.com> - 2015-09-30 19:20 +0200
        Re: [RFC 0/3] sched/idle: run-time support for setting idle polling Peter Zijlstra <peterz@infradead.org> - 2015-09-30 19:40 +0200
          Re: [RFC 0/3] sched/idle: run-time support for setting idle polling Luiz Capitulino <lcapitulino@redhat.com> - 2015-09-30 20:10 +0200

csiph-web