Messages in this thread | | | Date | Fri, 30 Sep 2022 16:32:18 +0800 | Subject | Re: [PATCH] sched/fair: limit burst to zero when cfs bandwidth is toggled off | From | "zhaowenhui (A)" <> |
| |
在 2022/8/30 11:19, zhaowenhui (A) 写道: > > > 在 2022/8/9 20:03, Zhao Wenhui 写道: >> When the quota value in CFS bandwidth is set to -1, that imples the >> cfs bandwidth is toggled off. So the burst feature is supposed to >> be disable as well. >> >> Currently, when quota is -1, burst will not be check, so that it can be >> set to almost arbitery value. Examples: >> mkdir /sys/fs/cgroup/cpu/test >> echo -1 > /sys/fs/cgroup/cpu/test/cpu.cfs_quota_us >> echo 10000000000000000 > >> /sys/fs/cgroup/cpu/test/cpu.cfs_burst_us >> >> Moreover, after the burst modified by this way, quota can't be set >> to any value: >> echo 100000 > cpu.cfs_quota_us >> -bash: echo: write error: Invalid argument >> >> This patch can ensure the burst value being zero and unalterable, >> when quota is set to -1. >> >> Fixes: f4183717b370 ("sched/fair: Introduce the burstable CFS >> controller") >> Reported-by: Zhao Gongyi <zhaogongyi@huawei.com> >> Signed-off-by: Zhao Wenhui <zhaowenhui8@huawei.com> >> --- >> kernel/sched/core.c | 10 +++++++++- >> 1 file changed, 9 insertions(+), 1 deletion(-) >> >> diff --git a/kernel/sched/core.c b/kernel/sched/core.c >> index ee28253c9ac0..4c1fc01d8c68 100644 >> --- a/kernel/sched/core.c >> +++ b/kernel/sched/core.c >> @@ -10584,6 +10584,12 @@ static int tg_set_cfs_bandwidth(struct >> task_group *tg, u64 period, u64 quota, >> burst + quota > max_cfs_runtime)) >> return -EINVAL; >> + /* >> + * Ensure burst equals to zero when quota is -1. >> + */ >> + if (quota == RUNTIME_INF && burst) >> + return -EINVAL; >> + >> /* >> * Prevent race between setting of cfs_rq->runtime_enabled and >> * unthrottle_offline_cfs_rqs(). >> @@ -10643,8 +10649,10 @@ static int tg_set_cfs_quota(struct task_group >> *tg, long cfs_quota_us) >> period = ktime_to_ns(tg->cfs_bandwidth.period); >> burst = tg->cfs_bandwidth.burst; >> - if (cfs_quota_us < 0) >> + if (cfs_quota_us < 0) { >> quota = RUNTIME_INF; >> + burst = 0; >> + } >> else if ((u64)cfs_quota_us <= U64_MAX / NSEC_PER_USEC) >> quota = (u64)cfs_quota_us * NSEC_PER_USEC; >> else > > Gentle ping. > > Thanks, > Zhao Wenhui
Dear Maintainers, Hi, this patch has been reviewed by two reviewers over a month ago. So, Any more suggestions for this patch or it can be picked?
Regards, Zhao Wenhui
| |