On Friday 24 October 2003 13:10, Nick Piggin wrote:
Hi,
http://www.kerneltrap.org/~npiggin/v17/
Still working on SMP and NUMA. Some (maybe) interesting things I put in are
- Sequential CPU balancing so you don't get a big storm of balances
every 1/4s.
- Balancing is trying to err more on the side of caution, I have to start
analysing it more thoroughly though.
+
+ *imbalance /= 2;
+ *imbalance = (*imbalance + FPT - 1) / FPT;
I think I see what is going on here, but would something like this work out better?
*imbalance = min(this_load - load_avg, load_avg - max_load)
That way you take just enough to either have busiest_queue or this_rq's length be the load_avg. I suppose you could take even less, but IMO, the /=2 is what I really don't like. Perhaps:
*imbalance = min(this_load - load_avg, load_avg - max_load);
*imbalance = (*imbalance + FPT - 1) / FPT;
This should work well for intranode balances, internode balances may need a little optimization, since the load_avg really does not really represent the load avg of the two nodes in question, just one cpu from one of them and all the cpus from another.