Re: [PATCH v5 3/3] sched/cputime: Add steal time support to full dynticks CPU time accounting

From: Rik van Riel
Date: Wed Jun 08 2016 - 21:20:42 EST


On Thu, 2016-06-09 at 07:57 +0800, Wanpeng Li wrote:
> 2016-06-09 3:05 GMT+08:00 Rik van Riel <riel@xxxxxxxxxx>:
> >
> > On Wed, 2016-06-08 at 11:05 +0800, Wanpeng Li wrote:
> > >
> > >
> > > @@ -681,12 +681,17 @@ static cputime_t vtime_delta(struct
> > > task_struct
> > > *tsk)
> > > Âstatic cputime_t get_vtime_delta(struct task_struct *tsk)
> > > Â{
> > > ÂÂÂÂÂÂunsigned long now = READ_ONCE(jiffies);
> > > -ÂÂÂÂÂunsigned long delta = now - tsk->vtime_snap;
> > > +ÂÂÂÂÂcputime_t delta_time, steal_time;
> > >
> > > +ÂÂÂÂÂsteal_time =
> > > jiffies_to_cputime(steal_account_process_tick());
> > > +ÂÂÂÂÂdelta_time = jiffies_to_cputime(now - tsk->vtime_snap);
> > > ÂÂÂÂÂÂWARN_ON_ONCE(tsk->vtime_snap_whence == VTIME_INACTIVE);
> > > ÂÂÂÂÂÂtsk->vtime_snap = now;
> > >
> > > -ÂÂÂÂÂreturn jiffies_to_cputime(delta);
> > > +ÂÂÂÂÂif (steal_time < delta_time)
> > > +ÂÂÂÂÂÂÂÂÂÂÂÂÂdelta_time -= steal_time;
> > > +
> > > +ÂÂÂÂÂreturn delta_time;
> > > Â}
> > This isn't right.
> >
> > If steal_time is equal to or larger than delta_time,
> > get_vtime_delta needs to return 0, not delta_time.
> >
> > Otherwise the same time will be counted twice.
> Paolo also pointed out this yesterday, so his proposal looks good to
> you, right?
>
Yes it does.

I can build the irqtime rework on top of your patches,
taking irq and softirq time out of the vtime delta as
well.

With Paolo's proposal, no time will ever be accounted
double, which is a good thing.

--
All Rights Reversed.

Attachment: signature.asc
Description: This is a digitally signed message part