On Sun, Jul 29, 2018 at 10:29 PM Xunlei Pang <xlp...@linux.alibaba.com> 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?