From: Ingo Molnar Shortcut escape from this queue if a hot task is met. I'm skeptical that it is good, but again it gives ppl something to test. --- 25-akpm/kernel/sched.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-) diff -puN kernel/sched.c~sched-migrate-shortcut kernel/sched.c --- 25/kernel/sched.c~sched-migrate-shortcut Mon Apr 26 15:31:41 2004 +++ 25-akpm/kernel/sched.c Mon Apr 26 15:31:41 2004 @@ -1311,7 +1311,7 @@ int can_migrate_task(task_t *p, runqueue if (idle == NEWLY_IDLE || sd->nr_balance_failed < sd->cache_nice_tries) { if (task_hot(p, rq->timestamp_last_tick, sd)) - return 0; + return -1; } return 1; @@ -1330,7 +1330,7 @@ static int move_tasks(runqueue_t *this_r { prio_array_t *array, *dst_array; struct list_head *head, *curr; - int idx, pulled = 0; + int ret, idx, pulled = 0; task_t *tmp; if (max_nr_move <= 0 || busiest->nr_running <= 1) @@ -1369,7 +1369,12 @@ skip_queue: curr = curr->next; - if (!can_migrate_task(tmp, busiest, this_cpu, sd, idle)) { + ret = can_migrate_task(tmp, busiest, this_cpu, sd, idle); + if (ret == -1) { + idx++; + goto skip_bitmap; + } + if (!ret) { if (curr != head) goto skip_queue; idx++; _