Messages in this thread Patch in this message | | | Date | Mon, 1 Aug 2005 17:42:21 -0700 | From | "Siddha, Suresh B" <> | Subject | [Patch] don't kick ALB in the presence of pinned task |
| |
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@intel.com>
--- 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |