On Wed, Jul 02, 2014 at 10:30:56AM +0800, Yuyang Du wrote: > The idea of per entity runnable load average (aggregated to cfs_rq and > task_group load) > was proposed by Paul Turner, and it is still followed by this rewrite. But > this rewrite > is made due to the following ends: > > (1). cfs_rq's load average (namely runnable_load_avg and blocked_load_avg) is > updated > incrementally by one entity at one time, which means the cfs_rq load average > is only > partially updated or asynchronous accross its entities (the entity in > question is up > to date and contributes to the cfs_rq, but all other entities are effectively > lagging > behind). > > (2). cfs_rq load average is different between top rq->cfs_rq and task_group's > per CPU > cfs_rqs in whether or not blocked_load_average contributes to the load. > > (3). How task_group's load is tracked is very confusing and complex. > > Therefore, this rewrite tackles these by: > > (1). Combine runnable and blocked load averages for cfs_rq. And track > cfs_rq's load average > as a whole (contributed by all runnabled and blocked entities on this cfs_rq). > > (2). Only track task load average. Do not track task_group's per CPU entity > average, but > track that entity's own cfs_rq's aggregated average. > > This rewrite resutls in significantly reduced codes and expected consistency > and clarity. > Also, if draw the lines of previous cfs_rq runnable_load_avg and > blocked_load_avg and the > new rewritten load_avg, then compare those lines, you can see the new > load_avg is much > more continuous (no abrupt jumping ups and downs) and decayed/updated more > quickly and > synchronously.
This patch is too big.. and I can't figure out wth you've done. The Changelog also doesn't seem to help much.
pgp3FXXkTdC_W.pgp
Description: PGP signature