Re: [RFC v5 2/9] sched/deadline: improve the tracking of active utilization
From: Juri Lelli
Date: Mon Mar 27 2017 - 03:18:00 EST
On 24/03/17 22:47, Luca Abeni wrote:
> Hi Peter,
>
> On Fri, 24 Mar 2017 14:20:41 +0100
> Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
>
> > On Fri, Mar 24, 2017 at 04:52:55AM +0100, luca abeni wrote:
> >
[...]
> >
> > In general I feel it would be nice to have a state diagram included
> > somewhere near these two functions. It would be nice to not have to
> > dig out the PDF every time.
>
> Ok... Since I am not good at ascii art, would it be ok to add a textual
> description? If yes, I'll add a comment like:
> "
> The utilization of a task is added to the runqueue's active utilization
> when the task becomes active (is enqueued in the runqueue), and is
Is enqueued for the first time on a new period, maybe? It seems to be
contradictory w.r.t. what below (if wakeup before 0 lag time) otherwise.
> removed when the task becomes inactive. A task does not become
> immediately inactive when it blocks, but becomes inactive at the so
> called "0 lag time"; so, we setup the "inactive timer" to fire at the
> "0 lag time". When the "inactive timer" fires, the task utilization is
> removed from the runqueue's active utilization. If the task wakes up
> again on the same runqueue before the "0 lag time", the active
> utilization must not be changed and the "inactive timer" must be
> cancelled. If the task wakes up again on a different runqueue before
> the "0 lag time", then the task's utilization must be removed from the
> previous runqueue's active utilization and must be added to the new
> runqueue's active utilization.
> In order to avoid races between a task waking up on a runqueue while the
> "inactive timer" is running on a different CPU, the "dl_non_contending"
> flag is used to indicate that a task is not on a runqueue but is active
> (so, the flag is set when the task blocks and is cleared when the
> "inactive timer" fires or when the task wakes up).
> "
> (if this is ok, where can I add this comment?)
>
Thanks for this Luca. Not sure it adds much to your text above, but we
might want to consider adding something like below?
--->8---
1st enqueue +------------------+
| |
+---------------->+ ACTIVEcontending |
| | |
| +----+------+------+
| | ^
| | |
+--------+-------+ | |
| | dequeue | | wakeup before
| INACTIVE | | | 0 lag time
| | | |
+--------+-------+ | |
^ | |
| V |
| +----+------+------+
| | |
+-----------------+ ACTIVEnonCONTEND |
| |
0 lag time +------------------+
elapsed
--->8---
Thanks,
- Juri