From ea08b58eb670ddaaef3e49f4bf4ae7e7830e8413 Mon Sep 17 00:00:00 2001 From: Cheng Jian <cj.chengjian@huawei.com> Date: Fri, 7 May 2021 19:37:22 +0800 Subject: [PATCH] Revert "sched: Introduce qos scheduler for co-location" This reverts commit 709d65618750e239e76c7ceac081673f36b265d0. --- init/Kconfig | 5 --- kernel/sched/core.c | 95 -------------------------------------------- kernel/sched/sched.h | 4 -- 3 files changed, 104 deletions(-) diff --git a/init/Kconfig b/init/Kconfig index e57c7d70328b..1386cf410c6a 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -776,11 +776,6 @@ menuconfig CGROUP_SCHED tasks. if CGROUP_SCHED -config QOS_SCHED - bool "Qos task scheduling" - depends on CGROUP_SCHED - default n - config FAIR_GROUP_SCHED bool "Group scheduling for SCHED_OTHER" depends on CGROUP_SCHED diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 8c1af86a3b21..41fee321ef83 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -6329,15 +6329,6 @@ void ia64_set_curr_task(int cpu, struct task_struct *p) /* task_group_lock serializes the addition/removal of task groups */ static DEFINE_SPINLOCK(task_group_lock); -#ifdef CONFIG_QOS_SCHED -static int alloc_qos_sched_group(struct task_group *tg, struct task_group *parent) -{ - tg->qos_level = parent->qos_level; - - return 1; -} -#endif - static void sched_free_group(struct task_group *tg) { free_fair_sched_group(tg); @@ -6358,11 +6349,6 @@ struct task_group *sched_create_group(struct task_group *parent) if (!alloc_fair_sched_group(tg, parent)) goto err; -#ifdef CONFIG_QOS_SCHED - if (!alloc_qos_sched_group(tg, parent)) - goto err; -#endif - if (!alloc_rt_sched_group(tg, parent)) goto err; @@ -6431,30 +6417,6 @@ static void sched_change_group(struct task_struct *tsk, int type) tg = autogroup_task_group(tsk, tg); tsk->sched_task_group = tg; -#ifdef CONFIG_QOS_SCHED - /* - * No need to re-setcheduler when a task is exiting or the task - * is in an autogroup. - */ - if (!rt_task(tsk) - && !(tsk->flags & PF_EXITING) - && !task_group_is_autogroup(tg)) { - struct rq *rq = task_rq(tsk); - struct sched_attr attr = { - .sched_priority = 0, - }; - - if (tg->qos_level == -1) { - attr.sched_policy = SCHED_IDLE; - } else { - attr.sched_policy = SCHED_NORMAL; - } - attr.sched_nice = PRIO_TO_NICE(tsk->static_prio); - - __setscheduler(rq, tsk, &attr, 0); - } -#endif - #ifdef CONFIG_FAIR_GROUP_SCHED if (tsk->sched_class->task_change_group) tsk->sched_class->task_change_group(tsk, type); @@ -6915,56 +6877,6 @@ static u64 cpu_rt_period_read_uint(struct cgroup_subsys_state *css, } #endif /* CONFIG_RT_GROUP_SCHED */ -#ifdef CONFIG_QOS_SCHED -static int cpu_qos_write(struct cgroup_subsys_state *css, - struct cftype *cftype, s64 qos_level) -{ - struct css_task_iter it; - struct task_struct *tsk; - struct task_group *tg; - struct sched_param param; - int pid, policy; - tg = css_tg(css); - - if (!tg->se[0]) - return -EINVAL; - - if (qos_level != -1 && qos_level != 0) - return -EINVAL; - - if (tg->qos_level == qos_level) - goto done; - - if (qos_level == -1) { - policy = SCHED_IDLE; - } else { - policy = SCHED_NORMAL; - } - - tg->qos_level = qos_level; - - param.sched_priority = 0; - css_task_iter_start(css, 0, &it); - while ((tsk = css_task_iter_next(&it))) { - pid = task_tgid_vnr(tsk); - - if (pid > 0 && !rt_task(tsk)) { - sched_setscheduler(tsk, policy, ¶m); - } - } - css_task_iter_end(&it); - -done: - return 0; -} - -static s64 cpu_qos_read(struct cgroup_subsys_state *css, struct cftype *cft) -{ - struct task_group *tg = css_tg(css); - return tg->qos_level; -} -#endif /* CONFIG_QOS_SCHED */ - static struct cftype cpu_legacy_files[] = { #ifdef CONFIG_FAIR_GROUP_SCHED { @@ -7000,13 +6912,6 @@ static struct cftype cpu_legacy_files[] = { .read_u64 = cpu_rt_period_read_uint, .write_u64 = cpu_rt_period_write_uint, }, -#endif -#ifdef CONFIG_QOS_SCHED - { - .name = "qos_level", - .read_s64 = cpu_qos_read, - .write_s64 = cpu_qos_write, - }, #endif { } /* Terminate */ }; diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 502af7c7373e..ca2fd2d6171f 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -400,11 +400,7 @@ struct task_group { struct cfs_bandwidth cfs_bandwidth; -#if defined(CONFIG_QOS_SCHED) && !defined(__GENKSYMS__) - long qos_level; -#else KABI_RESERVE(1) -#endif KABI_RESERVE(2) }; -- GitLab