From: Peter Zijlstra <peterz@infradead.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Morten Rasmussen <morten.rasmussen@arm.com>,
Arjan van de Ven <arjan@linux.intel.com>,
Jacob Pan <jacob.jun.pan@linux.intel.com>,
Ingo Molnar <mingo@redhat.com>,
John Stultz <john.stultz@linaro.org>,
LKML <linux-kernel@vger.kernel.org>,
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: Fri, 20 Nov 2015 13:54:41 +0100 [thread overview]
Message-ID: <20151120125441.GD17308@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <alpine.DEB.2.11.1511201150480.3989@nanos>
On Fri, Nov 20, 2015 at 11:58:12AM +0100, Thomas Gleixner wrote:
> That's not what I meant. If you don't want to control all that from
> the scheduler than you are back to that thread which "runs" at RT
> priority and does
>
> if (machine_on_fire) {
> defer_timer_interrupt(5ms);
> end = now + 5ms:
> while (now < end)
> mwait();
> }
>
> That's what the existing code does, but the above does not longer
> claim it's idle and confuses the hell out of nohz and whatever. It's
> just a "runaway" RT task which "hogs" the CPU for 5ms and makes the
> next timer interrupt firing late.
Right; so the naive way of implementing that is by simply programing the
timer hardware 5ms in the future and leaving it at that.
The problem with that would be a device interrupt happening and mucking
with timers, this would result in the timer hardware being reprogrammed
to a 'sane' value. I see two solutions for that:
- add another check in tick_program_event(); or,
- muck about with the evtdev pointer, such that we (temporarily) neuter
its clock_event_device::set_next_*() methods.
The later is fugly, but avoids any runtime overhead.
This all makes the idle-injection muck hard depend on hres_active, but I
think that's a sane constraint anyway.
next prev parent reply other threads:[~2015-11-20 12:54 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
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 [this message]
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=20151120125441.GD17308@twins.programming.kicks-ass.net \
--to=peterz@infradead.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=morten.rasmussen@arm.com \
--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.