Re: [patch 11/16] sched: replace update_shares weight distribution with per-entity computation

From: Benjamin Segall
Date: Mon Sep 24 2012 - 16:39:32 EST


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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/