On Mon, Jun 03, 2019 at 12:43:09PM +0800, Liangyan wrote: > From: "liangyan.ply" <liangyan....@linux.alibaba.com> > > start_cfs_slack_bandwidth() will restart the quota slack timer, > if it is called frequently, this timer will be restarted continuously > and may have no chance to expire to unthrottle cfs tasks. > This will cause that the throttled tasks can't be unthrottled in time > although they have remaining quota.
This looks very similar to the patch from Ben here: https://lkml.kernel.org/r/xm26blzlyr9d....@bsegall-linux.svl.corp.google.com > > Signed-off-by: Liangyan <liangyan.p...@linux.alibaba.com> > --- > kernel/sched/fair.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index d90a64620072..fdb03c752f97 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -4411,9 +4411,11 @@ static void start_cfs_slack_bandwidth(struct > cfs_bandwidth *cfs_b) > if (runtime_refresh_within(cfs_b, min_left)) > return; > > - hrtimer_start(&cfs_b->slack_timer, > + if (!hrtimer_active(&cfs_b->slack_timer)) { > + hrtimer_start(&cfs_b->slack_timer, > ns_to_ktime(cfs_bandwidth_slack_period), > HRTIMER_MODE_REL); > + } > } > > /* we know any runtime found here is valid as update_curr() precedes return > */ > -- > 2.14.4.44.g2045bb6 >