aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched/fair.c16
1 files changed, 2 insertions, 14 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 8cb32f83c9b0..10a5a286d8e2 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -5315,24 +5315,12 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env)
5315 if (!tsk_cache_hot) 5315 if (!tsk_cache_hot)
5316 tsk_cache_hot = migrate_degrades_locality(p, env); 5316 tsk_cache_hot = migrate_degrades_locality(p, env);
5317 5317
5318 if (migrate_improves_locality(p, env)) { 5318 if (migrate_improves_locality(p, env) || !tsk_cache_hot ||
5319#ifdef CONFIG_SCHEDSTATS 5319 env->sd->nr_balance_failed > env->sd->cache_nice_tries) {
5320 if (tsk_cache_hot) { 5320 if (tsk_cache_hot) {
5321 schedstat_inc(env->sd, lb_hot_gained[env->idle]); 5321 schedstat_inc(env->sd, lb_hot_gained[env->idle]);
5322 schedstat_inc(p, se.statistics.nr_forced_migrations); 5322 schedstat_inc(p, se.statistics.nr_forced_migrations);
5323 } 5323 }
5324#endif
5325 return 1;
5326 }
5327
5328 if (!tsk_cache_hot ||
5329 env->sd->nr_balance_failed > env->sd->cache_nice_tries) {
5330
5331 if (tsk_cache_hot) {
5332 schedstat_inc(env->sd, lb_hot_gained[env->idle]);
5333 schedstat_inc(p, se.statistics.nr_forced_migrations);
5334 }
5335
5336 return 1; 5324 return 1;
5337 } 5325 }
5338 5326