sched: entity load-tracking load_avg_ratio

This patch adds load_avg_ratio to each task. The load_avg_ratio is a
variant of load_avg_contrib which is not scaled by the task priority. It
is calculated like this:

runnable_avg_sum * NICE_0_LOAD / (runnable_avg_period + 1).

Signed-off-by: Morten Rasmussen <Morten.Rasmussen@arm.com>
This commit is contained in:
Morten Rasmussen
2012-09-14 14:38:08 +01:00
committed by Jon Medhurst
parent 0841c6ae0b
commit be6ef1d56e
2 changed files with 4 additions and 0 deletions

View File

@@ -931,6 +931,7 @@ struct sched_avg {
u64 last_runnable_update;
s64 decay_count;
unsigned long load_avg_contrib;
unsigned long load_avg_ratio;
u32 usage_avg_sum;
};

View File

@@ -1428,6 +1428,9 @@ static inline void __update_task_entity_contrib(struct sched_entity *se)
contrib = se->avg.runnable_avg_sum * scale_load_down(se->load.weight);
contrib /= (se->avg.runnable_avg_period + 1);
se->avg.load_avg_contrib = scale_load(contrib);
contrib = se->avg.runnable_avg_sum * scale_load_down(NICE_0_LOAD);
contrib /= (se->avg.runnable_avg_period + 1);
se->avg.load_avg_ratio = scale_load(contrib);
}
/* Compute the current contribution to load_avg by se, return any delta */