sched_best_cpu
PATCH 1/1 sched_best_cpu
Hi,
I ran across the '10 *' stuff (grrr... grrr...) in
linux-2.6.0-test3/kernel/sched.c:sched_best_cpu
I think next patch is more like it.
Frank.
sched.c renamed from sched.c.orig +4 -4
@@ -776,7 +776,7 @@*/ static int sched_best_cpu (struct task_struct *p) { -int i, minload, load, best_cpu, node =0 ; +int i, minload, load, best_cpu, node =0 , pnode;unsigned long cpumask; best_cpu =task_cpu (p);
@@ -784,14 +784,14 @@return best_cpu; minload =10000000 ; + pnode =cpu_to_node (task_cpu (p));for_each_node_with_cpus (i) {/* * Node load is always divided by nr_cpus_node to normalise * load values in case cpu count differs from node to node. -* We first multiply node_nr_running by 10 to get a little -* better resolution. +* If the node != our node we add the load of the task. */ - load =10 *atomic_read (&node_nr_running[i]) /nr_cpus_node (i); + load = (atomic_read (&node_nr_running[i]) + (i != pnode)) /nr_cpus_node (i);if (load < minload) { minload = load; node = i;
Ok, here's the good one.
Frank.
sched.c renamed from sched.c.orig +5 -4
@@ -776,7 +776,7 @@*/ static int sched_best_cpu (struct task_struct *p) { -int i, minload, load, best_cpu, node =0 ; +int i, minload, load, best_cpu, node =0 , pnode;unsigned long cpumask; best_cpu =task_cpu (p);
@@ -784,14 +784,15 @@return best_cpu; minload =10000000 ; + pnode =cpu_to_node (task_cpu (p));for_each_node_with_cpus (i) {/* * Node load is always divided by nr_cpus_node to normalise * load values in case cpu count differs from node to node. -* We first multiply node_nr_running by 10 to get a little -* better resolution. +* If the node != our node we add the load of the task. +* We multiply by 10 for better resolution. */ - load =10 *atomic_read (&node_nr_running[i]) /nr_cpus_node (i); + load =10 * (atomic_read (&node_nr_running[i]) + (i != pnode)) /nr_cpus_node (i);if (load < minload) { minload = load; node = i;