Messages in this thread | | | Date | Wed, 1 Feb 2006 14:08:18 +0100 | From | Ingo Molnar <> | Subject | Re: [PATCH] Avoid moving tasks when a schedule can be made. |
| |
* Steven Rostedt <rostedt@goodmis.org> wrote:
[pls. use -p when generating patches]
> @@ -1983,6 +1983,10 @@ > > curr = curr->prev; > > + /* bail if someone else woke up */ > + if (need_resched()) > + goto out; > + > if (!can_migrate_task(tmp, busiest, this_cpu, sd, idle, &pinned)) { > if (curr != head) > goto skip_queue;
even putting the problems of this approach aside (is it right to abort the act of load-balancing - which is a periodic activity that wont be restarted after this - so we lose real work), i think this will not solve the latency. Imagine a hardirq hitting the CPU that is executing move_tasks() above. We might not service that hardirq for up to 1.5 msecs ...
i think the right approach would be to split up this work into smaller chunks. Or rather, lets first see how this can happen: why is can_migrate() false for so many tasks? Are they all cpu-hot? If yes, shouldnt we simply skip only up to a limit of tasks in this case - it's not like we want to spend 1.5 msecs searching for a cache-cold task which might give us a 50 usecs advantage over cache-hot tasks ...
Ingo - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |