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 <bseg...@google.com>
Thanks Ben! -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/