Re: [PATCH 12/35] autonuma: CPU follow memory algorithm

From: Rik van Riel
Date: Tue May 29 2012 - 09:57:24 EST


On 05/29/2012 09:00 AM, Peter Zijlstra wrote:
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..

Do you have any suggestions for how Andrea could fix this?

Pairwise comparisons with a busy CPU/node?

--
All rights reversed
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/