Re: [RFC v2 3/7] Improve the tracking of active utilisation

From: luca abeni
Date: Tue Apr 05 2016 - 13:00:42 EST


Hi Peter,

On Tue, 5 Apr 2016 14:42:18 +0200
Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:

> On Fri, Apr 01, 2016 at 05:12:29PM +0200, Luca Abeni wrote:
> > +static void task_go_inactive(struct task_struct *p)
> > +{
> > + struct sched_dl_entity *dl_se = &p->dl;
> > + struct hrtimer *timer = &dl_se->inactive_timer;
> > + struct dl_rq *dl_rq = dl_rq_of_se(dl_se);
> > + struct rq *rq = rq_of_dl_rq(dl_rq);
> > + ktime_t now, act;
> > + s64 delta;
> > + u64 zerolag_time;
>
> s64 zerolag_time;
Ok.

[...]
> Would something like:
>
> zerolag_time -= rq_clock(rq);
>
> > +
> > + /*
> > + * If the "0-lag time" already passed, decrease the active
> > + * utilization now, instead of starting a timer
> > + */
> > + if (ktime_us_delta(act, now) < 0) {
>
> if (zerolag_time < 0)
>
> > + sub_running_bw(dl_se, dl_rq);
> > + if (!dl_task(p))
> > + __dl_clear_params(p);
> > +
> > + return;
> > + }
> > +
> > + get_task_struct(p);
> > + hrtimer_start(timer, act, HRTIMER_MODE_ABS);
>
> hrtimer_start(timer, ns_to_ktime(zerolag), HRTIMER_MODE_REL);
>
> > +}
>
> Not be simpler ?
I think I blindly copied this code from the deadline timer, but yes,
you are right, I am doing a lot of useless conversions here. I'll fix
this.



Thanks,
Luca