sched: Add sched_avg::utilization_avg_contrib
Add new statistics which reflect the average time a task is running on the CPU and the sum of these running time of the tasks on a runqueue. The latter is named utilization_load_avg. This patch is based on the usage metric that was proposed in the 1st versions of the per-entity load tracking patchset by Paul Turner <pjt@google.com> but that has be removed afterwards. This version differs from the original one in the sense that it's not linked to task_group. The rq's utilization_load_avg will be used to check if a rq is overloaded or not instead of trying to compute how many tasks a group of CPUs can handle. Rename runnable_avg_period into avg_period as it is now used with both runnable_avg_sum and running_avg_sum. Add some descriptions of the variables to explain their differences. Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Morten Rasmussen <morten.rasmussen@arm.com> Cc: Paul Turner <pjt@google.com> Cc: Ben Segall <bsegall@google.com> Cc: Ben Segall <bsegall@google.com> Cc: Morten.Rasmussen@arm.com Cc: Paul Turner <pjt@google.com> Cc: dietmar.eggemann@arm.com Cc: efault@gmx.de Cc: kamalesh@linux.vnet.ibm.com Cc: linaro-kernel@lists.linaro.org Cc: nicolas.pitre@linaro.org Cc: preeti@linux.vnet.ibm.com Cc: riel@redhat.com Link: http://lkml.kernel.org/r/1425052454-25797-2-git-send-email-vincent.guittot@linaro.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:

committed by
Ingo Molnar

parent
b6366f048e
commit
36ee28e45d
@@ -1115,15 +1115,28 @@ struct load_weight {
|
||||
};
|
||||
|
||||
struct sched_avg {
|
||||
u64 last_runnable_update;
|
||||
s64 decay_count;
|
||||
/*
|
||||
* utilization_avg_contrib describes the amount of time that a
|
||||
* sched_entity is running on a CPU. It is based on running_avg_sum
|
||||
* and is scaled in the range [0..SCHED_LOAD_SCALE].
|
||||
* load_avg_contrib described the amount of time that a sched_entity
|
||||
* is runnable on a rq. It is based on both runnable_avg_sum and the
|
||||
* weight of the task.
|
||||
*/
|
||||
unsigned long load_avg_contrib, utilization_avg_contrib;
|
||||
/*
|
||||
* These sums represent an infinite geometric series and so are bound
|
||||
* above by 1024/(1-y). Thus we only need a u32 to store them for all
|
||||
* choices of y < 1-2^(-32)*1024.
|
||||
* running_avg_sum reflects the time that the sched_entity is
|
||||
* effectively running on the CPU.
|
||||
* runnable_avg_sum represents the amount of time a sched_entity is on
|
||||
* a runqueue which includes the running time that is monitored by
|
||||
* running_avg_sum.
|
||||
*/
|
||||
u32 runnable_avg_sum, runnable_avg_period;
|
||||
u64 last_runnable_update;
|
||||
s64 decay_count;
|
||||
unsigned long load_avg_contrib;
|
||||
u32 runnable_avg_sum, avg_period, running_avg_sum;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_SCHEDSTATS
|
||||
|
Reference in New Issue
Block a user