From 58165b16d229a6f705ddfc4a23e75c0791a18086 Mon Sep 17 00:00:00 2001 From: zhangwei123171 Date: Thu, 10 Aug 2023 17:03:14 +0800 Subject: [PATCH] sched/fair: ignore the rt or dl task in tg_change_scheduler jingdong inclusion category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I7S71H ----------------------------------------------------- When switching the sched policy of the container process through qos_level, you need to ignore the rt or dl task. Both online task and offline task are limited to the cfs scheduling class. Fixes: bda154046daa2 ("sched: Introduce qos scheduler for co-location") Signed-off-by: zhangwei123171 Reviewed-by: zhaoxiaoqiang11 --- kernel/sched/core.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 71c69c8161ff..cdf98e1d447a 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -9481,8 +9481,14 @@ static int tg_change_scheduler(struct task_group *tg, void *data) param.sched_priority = 0; css_task_iter_start(css, 0, &it); - while ((tsk = css_task_iter_next(&it))) + while ((tsk = css_task_iter_next(&it))) { + if (unlikely(rt_task(tsk) || dl_task(tsk))) { + pr_warn("skip %s/%d when setting qos_level\n", tsk->comm, tsk->pid); + continue; + } + sched_setscheduler(tsk, policy, ¶m); + } css_task_iter_end(&it); return 0; -- Gitee