|
@@ -2897,14 +2897,16 @@ static void active_load_balance(struct rq *busiest_rq, int busiest_cpu)
|
|
|
static void update_load(struct rq *this_rq)
|
|
|
{
|
|
|
unsigned long this_load;
|
|
|
- int i, scale;
|
|
|
+ unsigned int i, scale;
|
|
|
|
|
|
this_load = this_rq->raw_weighted_load;
|
|
|
|
|
|
/* Update our load: */
|
|
|
- for (i = 0, scale = 1; i < 3; i++, scale <<= 1) {
|
|
|
+ for (i = 0, scale = 1; i < 3; i++, scale += scale) {
|
|
|
unsigned long old_load, new_load;
|
|
|
|
|
|
+ /* scale is effectively 1 << i now, and >> i divides by scale */
|
|
|
+
|
|
|
old_load = this_rq->cpu_load[i];
|
|
|
new_load = this_load;
|
|
|
/*
|
|
@@ -2914,7 +2916,7 @@ static void update_load(struct rq *this_rq)
|
|
|
*/
|
|
|
if (new_load > old_load)
|
|
|
new_load += scale-1;
|
|
|
- this_rq->cpu_load[i] = (old_load*(scale-1) + new_load) / scale;
|
|
|
+ this_rq->cpu_load[i] = (old_load*(scale-1) + new_load) >> i;
|
|
|
}
|
|
|
}
|
|
|
|