On Wed, May 12, 2021 at 01:32:03PM +0200, Peter Zijlstra wrote: > On Wed, May 12, 2021 at 12:10:40PM +0100, Mel Gorman wrote: > > As delta is !0 iff t->sched_info.last_queued, why not this? > > > > diff --git a/kernel/sched/stats.h b/kernel/sched/stats.h > > index 33ffd41935ba..37e33c0eeb7c 100644 > > --- a/kernel/sched/stats.h > > +++ b/kernel/sched/stats.h > > @@ -158,15 +158,14 @@ static inline void psi_sched_switch(struct task_struct *prev, > > */ > > static inline void sched_info_dequeue(struct rq *rq, struct task_struct *t) > > { > > - unsigned long long delta = 0; > > - > > if (t->sched_info.last_queued) { > > + unsigned long long delta; > > + > > delta = rq_clock(rq) - t->sched_info.last_queued; > > t->sched_info.last_queued = 0; > > + t->sched_info.run_delay += delta; > > + rq_sched_info_dequeue(rq, delta); > > } > > - t->sched_info.run_delay += delta; > > - > > - rq_sched_info_dequeue(rq, delta); > > } > > Right.. clearly I missed the obvious there.. Lemme go add another patch > on top of the lot. > > Something like this I suppose. > That works for me. -- Mel Gorman SUSE Labs