Messages in this thread | | | Date | Mon, 23 Jun 2014 08:46:25 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH] sched: Fix potential near-infinite distribute_cfs_runtime loop |
| |
On Fri, Jun 20, 2014 at 03:21:20PM -0700, Ben Segall wrote: > distribute_cfs_runtime intentionally only hands out enough runtime to > bring each cfs_rq to 1 ns of runtime, expecting the cfs_rqs to then take > the runtime they need only once they actually get to run. However, if > they get to run sufficiently quickly, the period timer is still in > distribute_cfs_runtime and no runtime is available, causing them to > throttle. Then distribute has to handle them again, and this can go on > until distribute has handed out all of the runtime 1ns at a time, which > takes far too long. > > Instead allow access to the same runtime that distribute is handing out, > accepting that corner cases with very low quota may be able to spend the > entire cfs_b->runtime during distribute_cfs_runtime, meaning that the > runtime directly handed out by distribute_cfs_runtime was over quota. In > addition, if a cfs_rq does manage to throttle like this, make sure the > existing distribute_cfs_runtime no longer loops over it again. > > Signed-off-by: Ben Segall <bsegall@google.com>
Thanks Ben!
| |