[Removed Suresh and Venki from discussion, they switched their companies probably] On 7 January 2013 20:34, Tejun Heo <tj@xxxxxxxxxx> wrote: > The latter part "not using idle cpu just for processing work" does > apply to homogeneous systems too but as I wrote earlier work items > don't spontaneously happen on an idle core. Something, including > timer, needs to kick it. So, by definition, a CPU already isn't idle > when a work item starts execution on it. What am I missing here? We are talking about a core being idle from schedulers perspective :) >> I have another idea that we can try: >> >> queue_work_on_any_cpu(). >> >> With this we would not break any existing code and can try to migrate >> old users to >> this new infrastructure (atleast the ones which are rearming works from their >> work_handlers). What do you say? > > Yeah, this could be a better solution, I think. Plus, it's not like > finding the optimal cpu is free. Thanks for the first part (When i shared this idea with Vincent and Amit, i wasn't sure at all about the feedback i will get from you and others, but i am very happy now :) ). I couldn't understand the second part. We still need to search for a free cpu for this new routine. And the implementation would almost be same as the implementation of queue_work() in my initial patch >> To take care of the cache locality issue, we can pass an argument to >> this routine, >> that can provide >> - the mask of cpus to schedule this work on >> OR >> - Sched Level (SD_LEVEL) of cpus to run it. > > Let's start simple for now. If we really need it, we can always add > more later. :) Agreed. But i liked the idea from steven, we can have two routines: queue_work_on_any_cpu() and queue_work_on_cpus() -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html