Re: [PATCH] sched/fair: sync expires_seq in distribute_cfs_runtime()

From: Cong Wang
Date: Mon Jul 30 2018 - 13:55:23 EST


On Sun, Jul 29, 2018 at 10:29 PM Xunlei Pang <xlpang@xxxxxxxxxxxxxxxxx> wrote:
>
> Hi Cong,
>
> On 7/28/18 8:24 AM, Cong Wang wrote:
> > Each time we sync cfs_rq->runtime_expires with cfs_b->runtime_expires,
> > we should sync its ->expires_seq too. However it is missing
> > for distribute_cfs_runtime(), especially the slack timer call path.
>
> I don't think it's a problem, as expires_seq will get synced in
> assign_cfs_rq_runtime().

Sure, but there is a small window during which they are not synced.
Why do you want to wait until the next assign_cfs_rq_runtime() when
you already know runtime_expires is synced?

Also, expire_cfs_rq_runtime() is called before assign_cfs_rq_runtime()
inside __account_cfs_rq_runtime(), which means the check of
cfs_rq->expires_seq is not accurate for unthrottling case if the clock
drift happens soon enough?