* [PATCH 6.6] sched/fair: Fix frequency selection for non-invariant case
@ 2025-08-15 16:48 Wentao Guan
2025-08-15 16:57 ` gregkh
0 siblings, 1 reply; 6+ messages in thread
From: Wentao Guan @ 2025-08-15 16:48 UTC (permalink / raw)
To: stable; +Cc: gregkh
Hi,
Please apply the commit e37617c8e53a1f7fcba6d5e1041f4fd8a2425c27,
it fix the REGRESSION by ada8d7fa0ad49a2a078f97f7f6e02d24d3c357a3
("sched/cpufreq: Rework schedutil governor performance estimation") which
introduced in v6.6.89.
Best Regards
Wentao Guan
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH 6.6] sched/fair: Fix frequency selection for non-invariant case 2025-08-15 16:48 [PATCH 6.6] sched/fair: Fix frequency selection for non-invariant case Wentao Guan @ 2025-08-15 16:57 ` gregkh 2025-08-15 17:01 ` Wentao Guan 0 siblings, 1 reply; 6+ messages in thread From: gregkh @ 2025-08-15 16:57 UTC (permalink / raw) To: Wentao Guan; +Cc: stable On Sat, Aug 16, 2025 at 12:48:14AM +0800, Wentao Guan wrote: > Hi, > Please apply the commit e37617c8e53a1f7fcba6d5e1041f4fd8a2425c27, > it fix the REGRESSION by ada8d7fa0ad49a2a078f97f7f6e02d24d3c357a3 > ("sched/cpufreq: Rework schedutil governor performance estimation") which > introduced in v6.6.89. Please provide a working, and tested, backport of that commit and we will be glad to queue it up. thanks, greg k-h ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 6.6] sched/fair: Fix frequency selection for non-invariant case 2025-08-15 16:57 ` gregkh @ 2025-08-15 17:01 ` Wentao Guan 2025-08-15 17:15 ` Greg KH 0 siblings, 1 reply; 6+ messages in thread From: Wentao Guan @ 2025-08-15 17:01 UTC (permalink / raw) To: Greg KH; +Cc: stable From ddd3f1ed6e88d88502d2b42e159ac976b4194b78 Mon Sep 17 00:00:00 2001 From: Vincent Guittot <vincent.guittot@linaro.org> Date: Sun, 14 Jan 2024 19:36:00 +0100 Subject: [PATCH] sched/fair: Fix frequency selection for non-invariant case Linus reported a ~50% performance regression on single-threaded workloads on his AMD Ryzen system, and bisected it to: 9c0b4bb7f630 ("sched/cpufreq: Rework schedutil governor performance estimation") When frequency invariance is not enabled, get_capacity_ref_freq(policy) is supposed to return the current frequency and the performance margin applied by map_util_perf(), enabling the utilization to go above the maximum compute capacity and to select a higher frequency than the current one. After the changes in 9c0b4bb7f630, the performance margin was applied earlier in the path to take into account utilization clampings and we couldn't get a utilization higher than the maximum compute capacity, and the CPU remained 'stuck' at lower frequencies. To fix this, we must use a frequency above the current frequency to get a chance to select a higher OPP when the current one becomes fully used. Apply the same margin and return a frequency 25% higher than the current one in order to switch to the next OPP before we fully use the CPU at the current one. [ mingo: Clarified the changelog. ] Fixes: 9c0b4bb7f630 ("sched/cpufreq: Rework schedutil governor performance estimation") Reported-by: Linus Torvalds <torvalds@linux-foundation.org> Bisected-by: Linus Torvalds <torvalds@linux-foundation.org> Reported-by: Wyes Karny <wkarny@gmail.com> Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Tested-by: Wyes Karny <wkarny@gmail.com> Link: https://lore.kernel.org/r/20240114183600.135316-1-vincent.guittot@linaro.org (cherry picked from commit e37617c8e53a1f7fcba6d5e1041f4fd8a2425c27) Signed-off-by: Wentao Guan <guanwentao@uniontech.com> --- I tested the patch two days ago, and the upstream commit can be directly apply. --- --- kernel/sched/cpufreq_schedutil.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c index cfe7c625d2ad6..819ec1ccc08cf 100644 --- a/kernel/sched/cpufreq_schedutil.c +++ b/kernel/sched/cpufreq_schedutil.c @@ -156,7 +156,11 @@ unsigned long get_capacity_ref_freq(struct cpufreq_policy *policy) if (arch_scale_freq_invariant()) return policy->cpuinfo.max_freq; - return policy->cur; + /* + * Apply a 25% margin so that we select a higher frequency than + * the current one before the CPU is fully busy: + */ + return policy->cur + (policy->cur >> 2); } /** ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 6.6] sched/fair: Fix frequency selection for non-invariant case 2025-08-15 17:01 ` Wentao Guan @ 2025-08-15 17:15 ` Greg KH 2025-08-15 17:29 ` Wentao Guan 0 siblings, 1 reply; 6+ messages in thread From: Greg KH @ 2025-08-15 17:15 UTC (permalink / raw) To: Wentao Guan; +Cc: stable On Sat, Aug 16, 2025 at 01:01:44AM +0800, Wentao Guan wrote: > From ddd3f1ed6e88d88502d2b42e159ac976b4194b78 Mon Sep 17 00:00:00 2001 > From: Vincent Guittot <vincent.guittot@linaro.org> > Date: Sun, 14 Jan 2024 19:36:00 +0100 > Subject: [PATCH] sched/fair: Fix frequency selection for non-invariant case > > Linus reported a ~50% performance regression on single-threaded > workloads on his AMD Ryzen system, and bisected it to: > > 9c0b4bb7f630 ("sched/cpufreq: Rework schedutil governor performance estimation") > > When frequency invariance is not enabled, get_capacity_ref_freq(policy) > is supposed to return the current frequency and the performance margin > applied by map_util_perf(), enabling the utilization to go above the > maximum compute capacity and to select a higher frequency than the current one. > > After the changes in 9c0b4bb7f630, the performance margin was applied > earlier in the path to take into account utilization clampings and > we couldn't get a utilization higher than the maximum compute capacity, > and the CPU remained 'stuck' at lower frequencies. > > To fix this, we must use a frequency above the current frequency to > get a chance to select a higher OPP when the current one becomes fully used. > Apply the same margin and return a frequency 25% higher than the current > one in order to switch to the next OPP before we fully use the CPU > at the current one. > > [ mingo: Clarified the changelog. ] > > Fixes: 9c0b4bb7f630 ("sched/cpufreq: Rework schedutil governor performance estimation") > Reported-by: Linus Torvalds <torvalds@linux-foundation.org> > Bisected-by: Linus Torvalds <torvalds@linux-foundation.org> > Reported-by: Wyes Karny <wkarny@gmail.com> > Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org> > Signed-off-by: Ingo Molnar <mingo@kernel.org> > Tested-by: Wyes Karny <wkarny@gmail.com> > Link: https://lore.kernel.org/r/20240114183600.135316-1-vincent.guittot@linaro.org > (cherry picked from commit e37617c8e53a1f7fcba6d5e1041f4fd8a2425c27) > Signed-off-by: Wentao Guan <guanwentao@uniontech.com> > --- > I tested the patch two days ago, and the upstream commit can be directly apply. > --- > --- > kernel/sched/cpufreq_schedutil.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c > index cfe7c625d2ad6..819ec1ccc08cf 100644 > --- a/kernel/sched/cpufreq_schedutil.c > +++ b/kernel/sched/cpufreq_schedutil.c > @@ -156,7 +156,11 @@ unsigned long get_capacity_ref_freq(struct cpufreq_policy *policy) > if (arch_scale_freq_invariant()) > return policy->cpuinfo.max_freq; > > - return policy->cur; > + /* > + * Apply a 25% margin so that we select a higher frequency than > + * the current one before the CPU is fully busy: > + */ > + return policy->cur + (policy->cur >> 2); > } > > /** Does not apply against the latest 6.6.y kernel release :( thanks, greg k-h ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 6.6] sched/fair: Fix frequency selection for non-invariant case 2025-08-15 17:15 ` Greg KH @ 2025-08-15 17:29 ` Wentao Guan 2025-08-15 17:32 ` Wentao Guan 0 siblings, 1 reply; 6+ messages in thread From: Wentao Guan @ 2025-08-15 17:29 UTC (permalink / raw) To: Greg KH; +Cc: stable Dear Greg, Oh, I miss the thing which first apply b3edde44e5d4504c23a176819865cd603fd16d6c ("cpufreq/schedutil: Use a fixed reference frequency"), then apply e37617c8e53a1f7fcba6d5e1041f4fd8a2425c27 ("sched/fair: Fix frequency selection for non-invariant case"). sorry... Best Regards Wentao Guan. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 6.6] sched/fair: Fix frequency selection for non-invariant case 2025-08-15 17:29 ` Wentao Guan @ 2025-08-15 17:32 ` Wentao Guan 0 siblings, 0 replies; 6+ messages in thread From: Wentao Guan @ 2025-08-15 17:32 UTC (permalink / raw) To: Greg KH; +Cc: stable Dear Greg, Oops, I missed the whole things, it will build failed, i will send the full patches series later. Best Regards Wentao Guan ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-08-15 17:32 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-08-15 16:48 [PATCH 6.6] sched/fair: Fix frequency selection for non-invariant case Wentao Guan 2025-08-15 16:57 ` gregkh 2025-08-15 17:01 ` Wentao Guan 2025-08-15 17:15 ` Greg KH 2025-08-15 17:29 ` Wentao Guan 2025-08-15 17:32 ` Wentao Guan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).