* Steven Rostedt <[email protected]> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]