Files
kernel_arpi/include/linux
Paul Turner 9ee474f556 sched: Maintain the load contribution of blocked entities
We are currently maintaining:

  runnable_load(cfs_rq) = \Sum task_load(t)

For all running children t of cfs_rq.  While this can be naturally updated for
tasks in a runnable state (as they are scheduled); this does not account for
the load contributed by blocked task entities.

This can be solved by introducing a separate accounting for blocked load:

  blocked_load(cfs_rq) = \Sum runnable(b) * weight(b)

Obviously we do not want to iterate over all blocked entities to account for
their decay, we instead observe that:

  runnable_load(t) = \Sum p_i*y^i

and that to account for an additional idle period we only need to compute:

  y*runnable_load(t).

This means that we can compute all blocked entities at once by evaluating:

  blocked_load(cfs_rq)` = y * blocked_load(cfs_rq)

Finally we maintain a decay counter so that when a sleeping entity re-awakens
we can determine how much of its load should be removed from the blocked sum.

Signed-off-by: Paul Turner <pjt@google.com>
Reviewed-by: Ben Segall <bsegall@google.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20120823141506.585389902@google.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2012-10-24 10:27:22 +02:00
..
2012-09-19 19:08:53 -06:00
2012-10-08 13:50:20 +10:30
2012-09-19 19:08:46 -06:00
2012-09-20 14:31:45 +02:00
2012-09-17 15:00:38 -07:00
2012-10-16 18:49:15 -07:00
2012-09-05 12:18:11 -07:00
2012-09-26 21:10:00 -04:00
2012-10-16 13:37:17 -04:00
2012-10-06 03:04:56 +09:00
2012-09-07 14:57:45 -04:00
2012-09-11 10:15:02 +02:00
2012-09-26 13:52:36 -07:00
2012-10-10 01:15:44 -04:00
2012-09-17 15:00:37 -07:00
2012-10-09 16:22:54 +09:00
2012-10-09 16:23:00 +09:00
2012-10-10 20:00:55 +10:30
2012-10-17 15:53:01 -05:00
2012-10-17 15:53:02 -05:00
2012-10-10 22:41:05 -04:00
2012-10-05 22:23:53 +02:00
2012-10-11 08:50:16 +09:00
2012-10-06 03:05:01 +09:00
2012-09-27 12:45:28 +02:00
2012-10-11 20:02:04 -04:00
2012-10-07 00:40:54 -04:00
2012-10-09 16:22:55 +09:00
2012-10-09 16:22:32 +09:00
2012-10-07 21:19:42 +02:00
2012-09-05 17:21:36 -07:00
2012-10-17 11:16:13 -07:00