here is an update of the node affine NUMA scheduler built on top of
the O(1) scheduler. General information about it can be found at
The main changes compared to the previous version are:
- modified migration_thread to allow "asynchronous" pushing of a task
to another CPU from within load_balance().
- load_balance() checks for the case of a single task running on a
remote node. As this task cannot be stolen by a CPU from its homenode
(because a running task cannot be stolen within the O(1) scheduler
framework), it will be pushed to its homenode if that one has <25%
These changes should solve the problem of long running tasks beeing
pushed away from their homenodes during short peaks of load on the
machine and not beeing able to return to their homenodes even if those
The patch at
is for 2.4.18-IA64 and requires the O(1) patch
These patches are well tested on IA64 platforms (16xItanium NEC Azusa,
32xItanium NEC Asama, non-NUMA Itanium).
For monitoring the runqueue loads and load balancer decisions one can
This creates per runqueue files in /proc/sched/load and
/proc/sched/history that which let one monitor the load, the initial
load balancing and the stealing decisions of the load balancer.
The attached patch is for the latest 2.5.31 bitkeeper tree. It is very
experimental and pretty untested. Thanks to Michael Hohnbaum who ported
the Nod18 version to 2.5.25 and helped a lot with the transition to 2.5.
This patch might work on NUMA-Q... I'll try to keep the BK tree
bk://numa-ef.bkbits.net/2.5-numa-sched up to date, so if someone has
fixes, improvements, ports to other platforms, please send patches
or changesets against that tree.
Global warming and climate change is everyones business!