[PATCH v3 6/8] sched: Limit sysctl sched_rt_{period|runtime}_us to RT_GROUP_SCHED
From: Sebastian Andrzej Siewior
Date: Fri Nov 13 2026 - 09:01:59 EST
The admission control for SCHED_DL has been moved to sysfs and RT
throttling has been moved (long ago) to the fair_server and its debugfs
interface.
This file remains to have an impact only on RT_GROUP_SCHED. Keeping it
for ABI/ compatibility reasons makes no sense because its original
purpose (RT throttling) is no longer served. Anyone changing this file
and hoping to change the throttling behaviour will be surprised.
Limit sysctl sched_rt_{period|runtime}_us to RT_GROUP_SCHED so everyone
using this outdated file is aware.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>
---
kernel/sched/rt.c | 34 ++++++++++++++++++++++------------
kernel/sched/sched.h | 5 +++--
2 files changed, 25 insertions(+), 14 deletions(-)
diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index 1a6450f91d567..abe8e05942249 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -8,6 +8,8 @@
#include "pelt.h"
int sched_rr_timeslice = RR_TIMESLICE;
+
+#ifdef CONFIG_RT_GROUP_SCHED
/* More than 4 hours if BW_SHIFT equals 20. */
static const u64 max_rt_runtime = MAX_BW;
@@ -22,14 +24,26 @@ int sysctl_sched_rt_period = 1000000;
* default: 1s
*/
int sysctl_sched_rt_runtime = 1000000;
+#endif
#ifdef CONFIG_SYSCTL
static int sysctl_sched_rr_timeslice = (MSEC_PER_SEC * RR_TIMESLICE) / HZ;
-static int sched_rt_handler(const struct ctl_table *table, int write, void *buffer,
- size_t *lenp, loff_t *ppos);
static int sched_rr_handler(const struct ctl_table *table, int write, void *buffer,
size_t *lenp, loff_t *ppos);
static const struct ctl_table sched_rt_sysctls[] = {
+ {
+ .procname = "sched_rr_timeslice_ms",
+ .data = &sysctl_sched_rr_timeslice,
+ .maxlen = sizeof(int),
+ .mode = 0644,
+ .proc_handler = sched_rr_handler,
+ },
+};
+
+#ifdef CONFIG_RT_GROUP_SCHED
+static int sched_rt_handler(const struct ctl_table *table, int write, void *buffer,
+ size_t *lenp, loff_t *ppos);
+static const struct ctl_table sched_rt_group_sysctls[] = {
{
.procname = "sched_rt_period_us",
.data = &sysctl_sched_rt_period,
@@ -48,18 +62,15 @@ static const struct ctl_table sched_rt_sysctls[] = {
.extra1 = SYSCTL_NEG_ONE,
.extra2 = (void *)&sysctl_sched_rt_period,
},
- {
- .procname = "sched_rr_timeslice_ms",
- .data = &sysctl_sched_rr_timeslice,
- .maxlen = sizeof(int),
- .mode = 0644,
- .proc_handler = sched_rr_handler,
- },
};
+#endif
static int __init sched_rt_sysctl_init(void)
{
register_sysctl_init("kernel", sched_rt_sysctls);
+#ifdef CONFIG_RT_GROUP_SCHED
+ register_sysctl_init("kernel", sched_rt_group_sysctls);
+#endif
return 0;
}
late_initcall(sched_rt_sysctl_init);
@@ -2845,6 +2856,7 @@ int sched_rt_can_attach(struct task_group *tg, struct task_struct *tsk)
#endif /* !CONFIG_RT_GROUP_SCHED */
#ifdef CONFIG_SYSCTL
+#ifdef CONFIG_RT_GROUP_SCHED
static int sched_rt_global_validate(void)
{
if ((sysctl_sched_rt_runtime != RUNTIME_INF) &&
@@ -2853,14 +2865,11 @@ static int sched_rt_global_validate(void)
NSEC_PER_USEC > max_rt_runtime)))
return -EINVAL;
-#ifdef CONFIG_RT_GROUP_SCHED
if (!rt_group_sched_enabled())
return 0;
scoped_guard(mutex, &rt_constraints_mutex)
return __rt_schedulable(NULL, 0, 0);
-#endif
- return 0;
}
static int sched_rt_handler(const struct ctl_table *table, int write, void *buffer,
@@ -2887,6 +2896,7 @@ static int sched_rt_handler(const struct ctl_table *table, int write, void *buff
return ret;
}
+#endif /* !CONFIG_RT_GROUP_SCHED */
static int sched_rr_handler(const struct ctl_table *table, int write, void *buffer,
size_t *lenp, loff_t *ppos)
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 00a3802d0ce04..966fe46fb38e7 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -110,8 +110,6 @@ extern long calc_load_fold_active(struct rq *this_rq, long adjust);
extern void call_trace_sched_update_nr_running(struct rq *rq, int count);
extern u64 sysfs_dl_runtime;
-extern int sysctl_sched_rt_period;
-extern int sysctl_sched_rt_runtime;
extern int sched_rr_timeslice;
/*
@@ -583,6 +581,9 @@ extern void unthrottle_cfs_rq(struct cfs_rq *cfs_rq);
extern bool cfs_task_bw_constrained(struct task_struct *p);
#ifdef CONFIG_RT_GROUP_SCHED
+extern int sysctl_sched_rt_period;
+extern int sysctl_sched_rt_runtime;
+
extern void init_tg_rt_entry(struct task_group *tg, struct rt_rq *rt_rq,
struct sched_rt_entity *rt_se, int cpu,
struct sched_rt_entity *parent);
--
2.55.0