Re: [RFC 4/8] Improve the tracking of active utilisation

From: Peter Zijlstra
Date: Fri Jan 15 2016 - 03:32:45 EST


On Fri, Jan 15, 2016 at 09:10:15AM +0100, Luca Abeni wrote:
> On 01/14/2016 08:47 PM, Peter Zijlstra wrote:
> >On Thu, Jan 14, 2016 at 04:24:49PM +0100, Luca Abeni wrote:
> >
> >>+ if (!hrtimer_is_queued(timer)) {
> >>+ hrtimer_start(timer, act, HRTIMER_MODE_ABS);
> >>+ }
> >>+
> >>+ if (hrtimer_active(timer) == 0) {
> >>+ printk("Problem activating inactive_timer!\n");
> >>+ clear_running_bw(dl_se, dl_rq);
> >>+ if (!dl_task(p)) {
> >>+ __dl_clear_params(p);
> >>+ }
> >>+ } else {
> >>+ get_task_struct(p);
> >
> >Ah, I missed that one. I would suggest putting that right _before_
> >hrtimer_start(), because hrtimer_start() guarantees the callback will
> >run.

> Ok. So, if I understand well, the "if (hrtimer_active(timer) == 0)" check
> is useless (or should be somehow revised)... Right?

Yes, ever since: c6eb3f70d448 ("hrtimer: Get rid of hrtimer softirq")
hrtimer_start() is guaranteed to work and result in a callback, even if
the time is in the past.