Re: [PATCH v2 6/6] sched/deadline: Implement fallback mechanism for !fit case
From: luca abeni
Date: Mon Apr 27 2020 - 10:17:37 EST
Hi Juri,
On Mon, 27 Apr 2020 15:34:38 +0200
Juri Lelli <juri.lelli@xxxxxxxxxx> wrote:
> Hi,
>
> On 27/04/20 10:37, Dietmar Eggemann wrote:
> > From: Luca Abeni <luca.abeni@xxxxxxxxxxxxxxx>
> >
> > When a task has a runtime that cannot be served within the
> > scheduling deadline by any of the idle CPU (later_mask) the task is
> > doomed to miss its deadline.
> >
> > This can happen since the SCHED_DEADLINE admission control
> > guarantees only bounded tardiness and not the hard respect of all
> > deadlines. In this case try to select the idle CPU with the largest
> > CPU capacity to minimize tardiness.
> >
> > Signed-off-by: Luca Abeni <luca.abeni@xxxxxxxxxxxxxxx>
> > Signed-off-by: Dietmar Eggemann <dietmar.eggemann@xxxxxxx>
[...]
> > - if (!cpumask_empty(later_mask))
> > - return 1;
> > + if (cpumask_empty(later_mask))
> > + cpumask_set_cpu(max_cpu, later_mask);
>
> Think we touched upon this during v1 review, but I'm (still?)
> wondering if we can do a little better, still considering only free
> cpus.
>
> Can't we get into a situation that some of the (once free) big cpus
> have been occupied by small tasks and now a big task enters the
> system and it only finds small cpus available, were it could have fit
> into bigs if small tasks were put onto small cpus?
>
> I.e., shouldn't we always try to best fit among free cpus?
Yes; there was an additional patch that tried schedule each task on the
slowest core where it can fit, to address this issue.
But I think it will go in a second round of patches.
Luca