Commit 29ec6e95 authored by Song Zhang's avatar Song Zhang Committed by zhangsong234
Browse files

sched/fair: Avoid offline tasks starve to death for priority load balance

euleros inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I60S5R


CVE: NA

Reference: NA

--------------------------------

When priority load balance enabled for online/offline tasks co-location,
offline tasks maybe starve to death by load balance detach_tasks()
if env->loop exceed env->loop_max and can not be migrate to idle cpus.

So we should set env->loop to 0 and detach offline tasks again.

Fixes: fbfd4454 ("sched: Introduce priority load balance for CFS")

Signed-off-by: default avatarSong Zhang <zhangsong34@huawei.com>
parent 44113df5
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -8630,6 +8630,13 @@ static int detach_tasks(struct lb_env *env)

#ifdef CONFIG_QOS_SCHED_PRIO_LB
	if (sysctl_sched_prio_load_balance_enabled && env->imbalance > 0) {
		/*
		 * Avoid offline tasks starve to death if env->loop exceed
		 * env->loop_max, so we should set env->loop to 0 and detach
		 * offline tasks again.
		*/
		if (env->loop > env->loop_max)
			env->loop = 0;
		loop++;
		if (loop == 1) {
			tasks = &env->src_rq->cfs_offline_tasks;