On Fri, 2012-05-25 at 19:02 +0200, Andrea Arcangeli wrote:@@ -3274,6 +3268,8 @@ need_resched:
post_schedule(rq);
+ sched_autonuma_balance();
+
sched_preempt_enable_no_resched();
if (need_resched())
goto need_resched;
+void sched_autonuma_balance(void)
+{
+ for_each_online_node(nid) {
+ }
+ for_each_online_node(nid) {
+ for_each_cpu_and(cpu, cpumask_of_node(nid), allowed) {
+ }
+ }
+ stop_one_cpu(this_cpu, migration_cpu_stop,&arg);
+}
NAK
You do _NOT_ put a O(nr_cpus) or even O(nr_nodes) loop in the middle of
schedule().
I see you've made it conditional, but schedule() taking that long --
even occasionally -- is just not cool.
schedule() calling schedule() is also an absolute abomination.
You were told to fix this several times..