Re: [PATCH v2] sched: rt: Make RT capacity aware

From: Qais Yousef
Date: Tue Nov 26 2019 - 04:39:27 EST


On 11/25/19 16:36, Steven Rostedt wrote:
> Sorry for the very late response...

No worries and thanks for taking the time to look at this!

>
> On Wed, 9 Oct 2019 11:46:11 +0100
> Qais Yousef <qais.yousef@xxxxxxx> wrote:
>
> > ATM the uclamp value are only used for frequency selection; but on
> > heterogeneous systems this is not enough and we need to ensure that the
> > capacity of the CPU is >= uclamp_min. Which is what implemented here.
>
> Is it possible that the capacity can be fixed, where the process can
> just have a cpu mask of CPUs that has the capacity for it?

It is possible and I did consider it. But it didn't feel right because:

1. The same can be achieved with regular affinities.
2. On some systems, especially medium and lower end devices the number
of big cores might be small (2 bigs and 6 littles is common).
I couldn't justify that pinning to bigs is always better than
letting the system try to balance itself in case it gets overloaded.

The thing with RT is that generally we offer little guarantees if the system is
not designed properly and the user can easily shoot themselves in the foot.

This implementation offered the simplest best effort while still not being too
restrictive.

But the idea is valid and worth looking at in the future.

>
> Not that this will affect this patch now, but just something for the
> future.
>
> >
> > capacity_orig_of(cpu) >= rt_task.uclamp_min
> >
> > Note that by default uclamp.min is 1024, which means that RT tasks will
> > always be biased towards the big CPUs, which make for a better more
> > predictable behavior for the default case.
> >
> > Must stress that the bias acts as a hint rather than a definite
> > placement strategy. For example, if all big cores are busy executing
> > other RT tasks we can't guarantee that a new RT task will be placed
> > there.
> >
> > On non-heterogeneous systems the original behavior of RT should be
> > retained. Similarly if uclamp is not selected in the config.
> >
> > Signed-off-by: Qais Yousef <qais.yousef@xxxxxxx>
>
> Reviewed-by: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx>

Thanks for your time :-)

--
Qais Yousef