Messages in this thread | | | From | Benjamin Segall <> | Subject | Re: [patch 11/16] sched: replace update_shares weight distribution with per-entity computation | Date | Mon, 24 Sep 2012 13:39:36 -0700 |
| |
blocked_load_avg ~= \sum_child child.runnable_avg_sum/child.runnable_avg_period * child.weight
The thought was: So if all the children have hit zero runnable_avg_sum (or in the case of a child task, will when they wake up), then blocked_avg sum should also hit zero at the same and we're in theory fine.
However, child load can be significantly larger than even the maximum value of runnable_avg_sum (and you can get a full contribution off a new task with only one tick of runnable_avg_sum anyway...), so runnable_avg_sum can hit zero first due to rounding. We should case on runnable_avg_sum || blocked_load_avg.
As a side note, currently decay_load uses SRR, which means none of these will hit zero anyway if updates occur more often than once per 32ms. I'm not sure how we missed /that/, but fixes incoming.
Thanks, Ben
| |