|
@@ -414,22 +414,6 @@ static inline runqueue_t *this_rq_lock(void)
|
|
return rq;
|
|
return rq;
|
|
}
|
|
}
|
|
|
|
|
|
-#ifdef CONFIG_SCHED_SMT
|
|
|
|
-static int cpu_and_siblings_are_idle(int cpu)
|
|
|
|
-{
|
|
|
|
- int sib;
|
|
|
|
- for_each_cpu_mask(sib, cpu_sibling_map[cpu]) {
|
|
|
|
- if (idle_cpu(sib))
|
|
|
|
- continue;
|
|
|
|
- return 0;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return 1;
|
|
|
|
-}
|
|
|
|
-#else
|
|
|
|
-#define cpu_and_siblings_are_idle(A) idle_cpu(A)
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
#ifdef CONFIG_SCHEDSTATS
|
|
#ifdef CONFIG_SCHEDSTATS
|
|
/*
|
|
/*
|
|
* Called when a process is dequeued from the active array and given
|
|
* Called when a process is dequeued from the active array and given
|
|
@@ -1652,12 +1636,11 @@ int can_migrate_task(task_t *p, runqueue_t *rq, int this_cpu,
|
|
|
|
|
|
/*
|
|
/*
|
|
* Aggressive migration if:
|
|
* Aggressive migration if:
|
|
- * 1) the [whole] cpu is idle, or
|
|
|
|
|
|
+ * 1) task is cache cold, or
|
|
* 2) too many balance attempts have failed.
|
|
* 2) too many balance attempts have failed.
|
|
*/
|
|
*/
|
|
|
|
|
|
- if (cpu_and_siblings_are_idle(this_cpu) || \
|
|
|
|
- sd->nr_balance_failed > sd->cache_nice_tries)
|
|
|
|
|
|
+ if (sd->nr_balance_failed > sd->cache_nice_tries)
|
|
return 1;
|
|
return 1;
|
|
|
|
|
|
if (task_hot(p, rq->timestamp_last_tick, sd))
|
|
if (task_hot(p, rq->timestamp_last_tick, sd))
|