Messages in this thread |  | | From | Valentin Schneider <> | Subject | Re: [PATCH] sched/core: Fix arch_scale_freq_tick() on tickless systems | Date | Wed, 14 Dec 2022 09:49:45 +0000 |
| |
On 30/11/22 14:51, Yair Podemsky wrote: > In order for the scheduler to be frequency invariant we measure the > ratio between the maximum cpu frequency and the actual cpu frequency. > During long tickless periods of time the calculations that keep track > of that might overflow, in the function scale_freq_tick(): > > if (check_shl_overflow(acnt, 2*SCHED_CAPACITY_SHIFT, &acnt)) > » goto error; > > eventually forcing the kernel to disable the feature for all cpus, > and show the warning message > "Scheduler frequency invariance went wobbly, disabling!". > Let's avoid that by limiting the frequency invariant calculations > to cpus with regular tick. > > Fixes: e2b0d619b400 ("x86, sched: check for counters overflow in frequency invariant accounting") > Signed-off-by: Yair Podemsky <ypodemsk@redhat.com> > Suggested-by: "Peter Zijlstra (Intel)" <peterz@infradead.org>
Reviewed-by: Valentin Schneider <vschneid@redhat.com>
> --- > V1 -> V2: solution approach was changed from detecting long tickless periods > to frequency invariant measurements on housekeeping cpus only. > Link: ee89073a1e9de11c7bd7726eb5da71a0e8795099.camel@redhat.com > --- > kernel/sched/core.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index daff72f00385..1bb0a840c817 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -5469,7 +5469,9 @@ void scheduler_tick(void) > unsigned long thermal_pressure; > u64 resched_latency; > > - arch_scale_freq_tick(); > + if (housekeeping_cpu(cpu, HK_TYPE_TICK)) > + arch_scale_freq_tick(); > + > sched_clock_tick(); > > rq_lock(rq, &rf); > -- > 2.31.1
|  |