Re: [RESEND] In cgroup v2, setting a smaller value for sched_rt_runtime_us fails.
From: Madadi Vineeth Reddy
Date: Wed Feb 11 2026 - 22:40:33 EST
On 11/02/26 07:42, Chen Jinghuang wrote:
> For example:
>
> # cat /proc/sys/kernel/sched_rt_runtime_us
> 950000
> # echo 940000 > /proc/sys/kernel/sched_rt_runtime_us
> -bash: echo: write error: Invalid argument
>
> This occurs because when the global RT quota is reduced while the root
> cgroup’s ratio remains unchanged, the root cgroup’s proportion ends up
> exceeding the global RT ratio. This is unreasonable: the root cgroup’s
> ratio should be updated when the global RT ratio changes.
>
> This patch ensures the root cgroup’s RT quota is adjusted whenever the
> global RT quota is modified.
>
> Signed-off-by: Chen Ridong <chenridong@xxxxxxxxxx>
> Signed-off-by: Chen Jinghuang <chenjinghuang2@xxxxxxxxxx>
> ---
> kernel/sched/rt.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
> index f1867fe8e5c5..30770ba7be4e 100644
> --- a/kernel/sched/rt.c
> +++ b/kernel/sched/rt.c
> @@ -2814,9 +2814,11 @@ long sched_group_rt_period(struct task_group *tg)
> static int sched_rt_global_constraints(void)
> {
> int ret = 0;
> + u64 period = global_rt_period();
> + u64 runtime = global_rt_runtime();
>
> mutex_lock(&rt_constraints_mutex);
> - ret = __rt_schedulable(NULL, 0, 0);
> + ret = __rt_schedulable(&root_task_group, period, runtime);
> mutex_unlock(&rt_constraints_mutex);
>
> return ret;
> @@ -2856,6 +2858,14 @@ static int sched_rt_global_validate(void)
>
> static void sched_rt_do_global(void)
> {
> +#ifdef CONFIG_RT_GROUP_SCHED
> + if (!rt_group_sched_enabled())
> + return;
> +
> + WARN_ON_ONCE(tg_set_rt_bandwidth(&root_task_group,
> + global_rt_period(),
> + global_rt_runtime()));
> +#endif
> }
>
> static int sched_rt_handler(const struct ctl_table *table, int write, void *buffer,
Hi Chen,
Tested this patch on POWER11 system
Without the patch:
echo 940000 > /proc/sys/kernel/sched_rt_runtime_us
-bash: echo: write error: Invalid argument
With patch:
echo 940000 > /proc/sys/kernel/sched_rt_runtime_us
cat /proc/sys/kernel/sched_rt_runtime_us
940000
Works as expected.
Tested-by: Madadi Vineeth Reddy <vineethr@xxxxxxxxxxxxx>
Thanks,
Vineeth