On Tue, Jan 07, 2014 at 02:22:20PM +0100, Peter Zijlstra wrote:
I just realized there's two different p's in there.
Ah, another way of looking at it is that the avg without blocked component is a 'now' picture. It is the load we are concerned with right now.
The more blocked we add the further out we look; with the obvious limit of the entire averaging period.
So the avg that is runnable is right now, t_0; the avg that is runnable + blocked is t_0 + p, where p is the avg period over which we expect the blocked contribution to appear.
So the above p for period, is unrelated to the below p which is a probability function.
So something like:
avg = runnable + p(i) * blocked; where p(i) \e [0,1]
could maybe be used to replace the cpu_load array and still represent the concept of looking at a bigger picture for larger sets. Leaving open the details of the map p.
We probably want to assume task wakeup is constant over time, so p (our probability function) should probably be an exponential distribution.