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 [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/