[Patch] don't kick ALB in the presence of pinned task
From: Siddha, Suresh B
Date: Mon Aug 01 2005 - 19:45:14 EST
Jack Steiner brought this issue at my OLS talk.
Take a scenario where two tasks are pinned to two HT threads in a physical
package. Idle packages in the system will keep kicking migration_thread
on the busy package with out any success.
We will run into similar scenarios in the presence of CMP/NUMA.
Patch appended.
Signed-off-by: Suresh Siddha <suresh.b.siddha@xxxxxxxxx>
--- linux-2.6.13-rc4/kernel/sched.c~ 2005-08-01 10:50:27.085884216 -0700
+++ linux-2.6.13-rc4/kernel/sched.c 2005-08-01 14:39:04.147573872 -0700
@@ -2098,6 +2098,16 @@
if (unlikely(sd->nr_balance_failed > sd->cache_nice_tries+2)) {
spin_lock(&busiest->lock);
+
+ /* don't kick the migration_thread, if the curr
+ * task on busiest cpu can't be moved to this_cpu
+ */
+ if (!cpu_isset(this_cpu, busiest->curr->cpus_allowed)) {
+ spin_unlock(&busiest->lock);
+ all_pinned = 1;
+ goto out_one_pinned;
+ }
+
if (!busiest->active_balance) {
busiest->active_balance = 1;
busiest->push_cpu = this_cpu;
@@ -2135,6 +2145,7 @@
out_balanced:
spin_unlock(&this_rq->lock);
+out_one_pinned:
schedstat_inc(sd, lb_balanced[idle]);
sd->nr_balance_failed = 0;
-
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/