Re: [PATCH 0/7] RT: (RFC) RT-Overload/Sched enhancements

From: Gregory Haskins
Date: Fri Oct 12 2007 - 09:23:29 EST


On Fri, 2007-10-12 at 07:47 -0400, Steven Rostedt wrote:
> --
>
> On Fri, 12 Oct 2007, Peter Zijlstra wrote:
>
> >
> > And for that, steve's rq->curr_prio field seems quite suitable.
> >
> > so instead of the:
> > for (3 tries)
> > find lowest cpu
> > try push
> >
> > we do:
> >
> > cpu_hotplug_lock();
> > cpus_and(mask, p->cpus_allowed, online_cpus);
> > for_each_cpu_mask(i, mask) {
> > if (cpu_rq(i)->curr_prio > p->prio && push_task(p, i))
> > break;
> > }
> > cpu_hotplug_unlock();
>

IMO we should try to logically separate the "search" and "push"
functionality (for instance, see my series). The search is useful
outside the "push" operation for cases where we are waking a lower-task
that doesn't preempt on the current RQ. In that case, we can try to
wake it directly on the optimal queue instead of waking locally and then
pushing away.

> The thing I'm worried about is that we pushed off a rt task that is higher
> in prio than another rt task on another cpu, and we'll cause a bunch of
> rt task bouncing. That is what I'm trying to avoid.

I agree, though I think we will achieve that once the final 3rd part of
the algorithm is implemented. Stay tuned for an update in that area.



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