diff options
author | openeuler-ci-bot <george@openeuler.sh> | 2022-12-01 08:56:17 +0000 |
---|---|---|
committer | Gitee <noreply@gitee.com> | 2022-12-01 08:56:17 +0000 |
commit | 81e6845b6ebaed0ac9f77cbda928d1de2a6d2838 (patch) | |
tree | c7587a295a89dd9173a919a23c330b7131481d5a | |
parent | 87ce18dc700a485abaabe9f10198ddf8377069f9 (diff) | |
parent | 740ff85a826f9190d993d482bcc67f142e4a5745 (diff) | |
download | openEuler-kernel-81e6845b6ebaed0ac9f77cbda928d1de2a6d2838.tar.gz |
!238 sched/fair: Avoid offline tasks starve to death for priority load balance
Merge Pull Request from: @zhangsong234
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: fbfd4454efbd ("sched: Introduce priority load balance for CFS")
issue reflink:
https://gitee.com/openeuler/kernel/issues/I60S5R?from=project-issue
Link:https://gitee.com/openeuler/kernel/pulls/238
Reviewed-by: Zheng Zengkai <zhengzengkai@huawei.com>
Signed-off-by: Zheng Zengkai <zhengzengkai@huawei.com>
-rw-r--r-- | kernel/sched/fair.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index d58a949c95194f..83aed043cd0100 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -8707,6 +8707,13 @@ next: #ifdef CONFIG_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; |