* [RESEND] In cgroup v2, setting a smaller value for sched_rt_runtime_us fails.
@ 2026-02-11 2:12 Chen Jinghuang
2026-02-12 3:39 ` Madadi Vineeth Reddy
0 siblings, 1 reply; 8+ messages in thread
From: Chen Jinghuang @ 2026-02-11 2:12 UTC (permalink / raw)
To: Ingo Molnar, Peter Zijlstra, Juri Lelli, Vincent Guittot
Cc: Dietmar Eggemann, Steven Rostedt, Ben Segall, Mel Gorman,
Valentin Schneider, linux-kernel
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@huawei.com>
Signed-off-by: Chen Jinghuang <chenjinghuang2@huawei.com>
---
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,
--
2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [RESEND] In cgroup v2, setting a smaller value for sched_rt_runtime_us fails.
2026-02-11 2:12 [RESEND] In cgroup v2, setting a smaller value for sched_rt_runtime_us fails Chen Jinghuang
@ 2026-02-12 3:39 ` Madadi Vineeth Reddy
0 siblings, 0 replies; 8+ messages in thread
From: Madadi Vineeth Reddy @ 2026-02-12 3:39 UTC (permalink / raw)
To: Chen Jinghuang
Cc: Ingo Molnar, Peter Zijlstra, Juri Lelli, Vincent Guittot,
Dietmar Eggemann, Steven Rostedt, Ben Segall, Mel Gorman,
Valentin Schneider, linux-kernel, Madadi Vineeth Reddy
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@huawei.com>
> Signed-off-by: Chen Jinghuang <chenjinghuang2@huawei.com>
> ---
> 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@linux.ibm.com>
Thanks,
Vineeth
^ permalink raw reply [flat|nested] 8+ messages in thread
* [RESEND] In cgroup v2, setting a smaller value for sched_rt_runtime_us fails.
@ 2026-03-20 1:34 Chen Jinghuang
2026-03-27 3:53 ` chenjinghuang
0 siblings, 1 reply; 8+ messages in thread
From: Chen Jinghuang @ 2026-03-20 1:34 UTC (permalink / raw)
To: mingo, peterz, juri.lelli, vincent.guittot, linux-kernel
Cc: dietmar.eggemann, rostedt, bsegall, mgorman, vschneid
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@huawei.com>
Tested-by: Madadi Vineeth Reddy <vineethr@linux.ibm.com>
Reviewed-by: Chen Jinghuang <chenjinghuang2@huawei.com>
---
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,
--
2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [RESEND] In cgroup v2, setting a smaller value for sched_rt_runtime_us fails.
2026-03-20 1:34 Chen Jinghuang
@ 2026-03-27 3:53 ` chenjinghuang
2026-04-20 4:03 ` chenjinghuang
0 siblings, 1 reply; 8+ messages in thread
From: chenjinghuang @ 2026-03-27 3:53 UTC (permalink / raw)
To: mingo, peterz, juri.lelli, vincent.guittot, linux-kernel
Cc: dietmar.eggemann, rostedt, bsegall, mgorman, vschneid
On 3/20/2026 9:34 AM, 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@huawei.com>
> Tested-by: Madadi Vineeth Reddy <vineethr@linux.ibm.com>
> Reviewed-by: Chen Jinghuang <chenjinghuang2@huawei.com>
> ---
> 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,
ping
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [RESEND] In cgroup v2, setting a smaller value for sched_rt_runtime_us fails.
2026-03-27 3:53 ` chenjinghuang
@ 2026-04-20 4:03 ` chenjinghuang
0 siblings, 0 replies; 8+ messages in thread
From: chenjinghuang @ 2026-04-20 4:03 UTC (permalink / raw)
To: mingo, peterz, juri.lelli, vincent.guittot, linux-kernel
Cc: dietmar.eggemann, rostedt, bsegall, mgorman, vschneid
On 3/27/2026 11:53 AM, chenjinghuang wrote:
> On 3/20/2026 9:34 AM, 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 Jinghuang <chenjinghuang2@huawei.com>
>> Tested-by: Madadi Vineeth Reddy <vineethr@linux.ibm.com>
>> Reviewed-by: Chen Ridong <chenridong@huawei.com>
>> ---
>> 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,
> ping
Hi,
Gentle ping on this patch.
I'd appreciate any feedback whenever you get time, or let me know if I
should resend/rework anything.
Regards,
Chen Jinghuang
^ permalink raw reply [flat|nested] 8+ messages in thread
* [RESEND] In cgroup v2, setting a smaller value for sched_rt_runtime_us fails.
@ 2026-02-26 3:38 Chen Jinghuang
2026-02-27 8:18 ` Chen Ridong
0 siblings, 1 reply; 8+ messages in thread
From: Chen Jinghuang @ 2026-02-26 3:38 UTC (permalink / raw)
To: Ingo Molnar, Peter Zijlstra, Juri Lelli, Vincent Guittot
Cc: Dietmar Eggemann, Steven Rostedt, Ben Segall, Mel Gorman,
Valentin Schneider, linux-kernel
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@huawei.com>
Signed-off-by: Chen Jinghuang <chenjinghuang2@huawei.com>
---
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,
--
2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [RESEND] In cgroup v2, setting a smaller value for sched_rt_runtime_us fails.
2026-02-26 3:38 Chen Jinghuang
@ 2026-02-27 8:18 ` Chen Ridong
0 siblings, 0 replies; 8+ messages in thread
From: Chen Ridong @ 2026-02-27 8:18 UTC (permalink / raw)
To: Chen Jinghuang, Ingo Molnar, Peter Zijlstra, Juri Lelli, Vincent Guittot
Cc: Dietmar Eggemann, Steven Rostedt, Ben Segall, Mel Gorman,
Valentin Schneider, linux-kernel
On 2026/2/26 11:38, 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@huawei.com>
> Signed-off-by: Chen Jinghuang <chenjinghuang2@huawei.com>
> ---
> 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,
Reviewed-by: Chen Ridong <chenridong@huawei.com>
--
Best regards,
Ridong
^ permalink raw reply [flat|nested] 8+ messages in thread
* [RESEND] In cgroup v2, setting a smaller value for sched_rt_runtime_us fails.
@ 2026-02-08 10:29 Chen Jinghuang
0 siblings, 0 replies; 8+ messages in thread
From: Chen Jinghuang @ 2026-02-08 10:29 UTC (permalink / raw)
To: Ingo Molnar, Peter Zijlstra, Juri Lelli, Vincent Guittot
Cc: Dietmar Eggemann, Steven Rostedt, Ben Segall, Mel Gorman,
Valentin Schneider, linux-kernel
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@huawei.com>
Signed-off-by: Chen Jinghuang <chenjinghuang2@huawei.com>
---
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,
--
2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-04-20 4:03 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-02-11 2:12 [RESEND] In cgroup v2, setting a smaller value for sched_rt_runtime_us fails Chen Jinghuang
2026-02-12 3:39 ` Madadi Vineeth Reddy
-- strict thread matches above, loose matches on Subject: below --
2026-03-20 1:34 Chen Jinghuang
2026-03-27 3:53 ` chenjinghuang
2026-04-20 4:03 ` chenjinghuang
2026-02-26 3:38 Chen Jinghuang
2026-02-27 8:18 ` Chen Ridong
2026-02-08 10:29 Chen Jinghuang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®