diff options
author | Vincent Guittot <vincent.guittot@linaro.org> | 2015-02-27 10:54:04 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-03-27 04:35:57 -0400 |
commit | 36ee28e45df50c2c8624b978335516e42d84ae1f (patch) | |
tree | 29c1060b971136642a02a9d9ef759635ed0ff782 /kernel/sched/debug.c | |
parent | b6366f048e0caff28af5335b7af2031266e1b06b (diff) |
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>
Diffstat (limited to 'kernel/sched/debug.c')
-rw-r--r-- | kernel/sched/debug.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 8baaf858d25c..578ff83d1d1a 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c | |||
@@ -71,7 +71,7 @@ static void print_cfs_group_stats(struct seq_file *m, int cpu, struct task_group | |||
71 | if (!se) { | 71 | if (!se) { |
72 | struct sched_avg *avg = &cpu_rq(cpu)->avg; | 72 | struct sched_avg *avg = &cpu_rq(cpu)->avg; |
73 | P(avg->runnable_avg_sum); | 73 | P(avg->runnable_avg_sum); |
74 | P(avg->runnable_avg_period); | 74 | P(avg->avg_period); |
75 | return; | 75 | return; |
76 | } | 76 | } |
77 | 77 | ||
@@ -94,7 +94,7 @@ static void print_cfs_group_stats(struct seq_file *m, int cpu, struct task_group | |||
94 | P(se->load.weight); | 94 | P(se->load.weight); |
95 | #ifdef CONFIG_SMP | 95 | #ifdef CONFIG_SMP |
96 | P(se->avg.runnable_avg_sum); | 96 | P(se->avg.runnable_avg_sum); |
97 | P(se->avg.runnable_avg_period); | 97 | P(se->avg.avg_period); |
98 | P(se->avg.load_avg_contrib); | 98 | P(se->avg.load_avg_contrib); |
99 | P(se->avg.decay_count); | 99 | P(se->avg.decay_count); |
100 | #endif | 100 | #endif |
@@ -214,6 +214,8 @@ void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq) | |||
214 | cfs_rq->runnable_load_avg); | 214 | cfs_rq->runnable_load_avg); |
215 | SEQ_printf(m, " .%-30s: %ld\n", "blocked_load_avg", | 215 | SEQ_printf(m, " .%-30s: %ld\n", "blocked_load_avg", |
216 | cfs_rq->blocked_load_avg); | 216 | cfs_rq->blocked_load_avg); |
217 | SEQ_printf(m, " .%-30s: %ld\n", "utilization_load_avg", | ||
218 | cfs_rq->utilization_load_avg); | ||
217 | #ifdef CONFIG_FAIR_GROUP_SCHED | 219 | #ifdef CONFIG_FAIR_GROUP_SCHED |
218 | SEQ_printf(m, " .%-30s: %ld\n", "tg_load_contrib", | 220 | SEQ_printf(m, " .%-30s: %ld\n", "tg_load_contrib", |
219 | cfs_rq->tg_load_contrib); | 221 | cfs_rq->tg_load_contrib); |
@@ -636,8 +638,10 @@ void proc_sched_show_task(struct task_struct *p, struct seq_file *m) | |||
636 | P(se.load.weight); | 638 | P(se.load.weight); |
637 | #ifdef CONFIG_SMP | 639 | #ifdef CONFIG_SMP |
638 | P(se.avg.runnable_avg_sum); | 640 | P(se.avg.runnable_avg_sum); |
639 | P(se.avg.runnable_avg_period); | 641 | P(se.avg.running_avg_sum); |
642 | P(se.avg.avg_period); | ||
640 | P(se.avg.load_avg_contrib); | 643 | P(se.avg.load_avg_contrib); |
644 | P(se.avg.utilization_avg_contrib); | ||
641 | P(se.avg.decay_count); | 645 | P(se.avg.decay_count); |
642 | #endif | 646 | #endif |
643 | P(policy); | 647 | P(policy); |