Messages in this thread | | | Date | Mon, 29 Aug 2022 10:08:13 +0200 | From | Peter Zijlstra <> | Subject | Re: [RFC PATCH 1/1] sched/pelt: Introduce PELT multiplier |
| |
On Mon, Aug 29, 2022 at 07:54:50AM +0200, Dietmar Eggemann wrote: > From: Vincent Donnefort <vincent.donnefort@arm.com> > > The new sysctl sched_pelt_multiplier allows a user to set a clock > multiplier to x2 or x4 (x1 being the default). This clock multiplier > artificially speeds up PELT ramp up/down similarly to use a faster > half-life than the default 32ms. > > - x1: 32ms half-life > - x2: 16ms half-life > - x4: 8ms half-life > > Internally, a new clock is created: rq->clock_task_mult. It sits in the > clock hierarchy between rq->clock_task and rq->clock_pelt. > > Signed-off-by: Vincent Donnefort <vincent.donnefort@arm.com> > Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
> +extern unsigned int sched_pelt_lshift; > + > +/* > + * absolute time |1 |2 |3 |4 |5 |6 | > + * @ mult = 1 --------****************--------****************- > + * @ mult = 2 --------********----------------********--------- > + * @ mult = 4 --------****--------------------****------------- > + * clock task mult > + * @ mult = 2 | | |2 |3 | | | | |5 |6 | | | > + * @ mult = 4 | | | | |2|3| | | | | | | | | | |5|6| | | | | | | > + * > + */ > +static inline void update_rq_clock_task_mult(struct rq *rq, s64 delta) > +{ > + delta <<= READ_ONCE(sched_pelt_lshift); > + > + rq->clock_task_mult += delta; > + > + update_rq_clock_pelt(rq, delta); > +}
Hurmph... I'd almost go write you something like static_call()/static_branch() but for immediates.
That said; given there's only like 3 options, perhaps a few static_branch() instances work just fine ?
| |