Re: [RFC PATCH 0/7] sched: cpufreq: Remove magic margins

From: Lukasz Luba
Date: Thu Sep 07 2023 - 11:36:28 EST




On 9/7/23 12:53, Peter Zijlstra wrote:
On Thu, Sep 07, 2023 at 08:48:08AM +0100, Lukasz Luba wrote:

Hehe. That's because they're not really periodic ;-)

They are periodic in a sense, they wake up every 16ms, but sometimes
they have more work. It depends what is currently going in the game
and/or sometimes the data locality (might not be in cache).

Although, that's for games, other workloads like youtube play or this
one 'Yahoo browser' (from your example) are more 'predictable' (after
the start up period). And I really like the potential energy saving
there :)

So everything media is fundamentally periodic, you're hard tied to the
framerate / audio-buffer size etc..

Agree


Also note that the traditional periodic task model from the real-time
community has the notion of WCET, which completely covers this
fluctuation in frame-to-frame work, it only considers the absolute worst
case.

That's good point, the WCET here. IMO shorter PELT e.g. 8ms allows us
to 'see' a bit more that information: the worst case in fluctuation of
a particular task. Then this 'seen' value is maintained in util_est
for a while. That's why (probably) I see a better 95-, 99-percentile
numbers for frames rendering time.


Now, practically, that stinks, esp. when you care about batteries, but
it does not mean these tasks are not periodic.

Totally agree they are periodic.


Many extentions to the periodic task model are possible, including
things like average runtime with bursts etc.. all have their trade-offs.

Was that maybe proposed somewhere on LKML (the other models)?

I can recall one idea - WALT.
IIRC ~2016/2017 the WALT proposal and some discussion/conferences, it
didn't get positive feedback [2].

I don't know if you remember those numbers back than, e.g. video 1080p
playback was using ~10% less energy... Those 10%-15% are still important
for us ;)

Regards,
Lukasz

[1] https://lore.kernel.org/all/1477638642-17428-1-git-send-email-markivx@xxxxxxxxxxxxxx/