Paul Jackson wrote:
Peter wrote:
In these circumstances, moving the task
to an idle CPU should be a "good thing" unless the time taken for the
move is longer than the time that will pass before the task becomes the
running task on its current CPU.
Even then, it's not always a "good thing".
The less of the cache-memory hierarchy the two CPUs share, the greater
the penalty to the task for memory accesses after the move.
At one extreme, two hyperthreads on the same core share essentially all
the memory hierarchy, so have no such penalty.
At the other extreme, two CPUs at opposite ends of a big NUMA box have,
so far as performance is concerned, quite different views of the memory
hierarchy. A task moved to a far away CPU will be cache cold for
several layers of core, package, board, and perhaps router hierarchy,
and have slower access to its main memory pages.
This will complicate things IF we end up having to introduce an "is it
worth moving this particular task" test to move_tasks() in addition to
the "cache hot" test. E.g. "will it take longer for this task to do
something useful on its new CPU than if we leave it here?" would
obviously have to take into account any delay in accessing memory as a
result of the move. Hopefully it won't come to that :-).
Peter
--
Peter Williams [email protected]
"Learning, n. The kind of ignorance distinguishing the studious."
-- Ambrose Bierce
-
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]