From: Monica C. <mc...@in...> - 2005-07-12 20:09:07
Attachments:
smime.p7s
multilevel_load_balancing.patch
|
Hi all, In my master's research I have studied the Linux scheduling and load balancing code and realized that although Linux has information about node distances through the SLIT table and node_distance function, it doesn't use this information when building the sched domains hierarchy. In generic code, arch_init_sched_domain function builds two sched domains levels for each processor: the first one contains the processors in the same node (assuming that the processors are not SMT) and the second one contains all nodes. The ia64 specific code can build three sched domains levels if the machine has more than 6 nodes. The second level has the six closest nodes (BTW, why 6?). I don`t understand why only two or three levels if there are NUMA systems with four, six, even ten memory access levels... So, I developed a patch to change the arch_init_sched_domains code to build one sched domain level for each memory access level, allowing Linux to perform real multilevel load balancing (The attached patch is to the current stable kernel version, 2.6.12.2). I sent this patch to the gelato and linux-ia64 lists a month ago, but I believe that it is not limited to ia64 architectures. The problem is that I don't have a NUMA machine with three or more memory access levels to test it. So, if anyone is interesting in testing, it would be of great help. If you can't test it, but has an opinion, critical or suggestion about my proposal, please do so. This is my first work on Linux code, so any comment is welcome! :) Thank you in advance, Monica |