Re: [PATCH] nohz_full: Make sched_should_stop_tick() more conservative

From: Chris Metcalf
Date: Mon Apr 25 2016 - 17:30:53 EST


On 4/21/2016 12:03 PM, Peter Zijlstra wrote:
On Thu, Apr 21, 2016 at 04:42:13PM +0200, Peter Zijlstra wrote:

So I think that is indeed the right thing here. But looking at this
function I think there's more problems with it.

It seems to assume that if there's FIFO tasks, those will run. This is
incorrect. The FIFO task can have a lower prio than an RR task, in which
case the RR task will run.

So the whole fifo_nr_running test seems misplaced, it should go after
the rr_nr_running tests. That is, only if !rr_nr_running, can we use
fifo_nr_running like this.
A little something like so perhaps; can anybody test?

Tested-by: Chris Metcalf <cmetcalf@xxxxxxxxxxxx>

To be clear, I only tested that it fixed my original bug, where we weren't
kicking a remote cpu when we should have been; I have not tested that
it works properly in the presence of RR or FIFO scheduled tasks.

But this or something like it should definitely go into 4.6 before it's done.

--
Chris Metcalf, Mellanox Technologies
http://www.mellanox.com