diff options
| author | Syed Rameez Mustafa <rameezmustafa@codeaurora.org> | 2015-11-02 15:08:20 -0800 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:02:38 -0700 |
| commit | 280b8668481d732d7e2602cb719b517f23f329b7 (patch) | |
| tree | d8be09ecdc4301276dc0a583184f55088595aec5 /kernel | |
| parent | f406df7c3588d9a605639e9f72eb894898cfba02 (diff) | |
sched: Optimize scheduler trace events to reduce trace buffer usage
Scheduler ftrace events currently generate a lot of data when turned
on. The excessive log messages often end up overflowing trace buffers
for long use cases or crowding out other events. Optimize scheduler
events so that the log spew is less and more manageable. To that end
change the variable type for some event fields; introduce variants
of sched_cpu_load that can be turned on/off for separate code paths
and remove unused fields from various events.
Change-Id: I2b313542b39ad5e09a01ad1303b5dfe2c4883b8a
Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org>
[joonwoop@codeaurora.org: fixed conflict in rt.c due to
CONFIG_SCHED_QHMP.]
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/sched/fair.c | 14 | ||||
| -rw-r--r-- | kernel/sched/rt.c | 4 | ||||
| -rw-r--r-- | kernel/sched/sched.h | 3 |
3 files changed, 12 insertions, 9 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index f6bba6dfdf9e..3813be29b6e8 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -3195,10 +3195,10 @@ static int select_best_cpu(struct task_struct *p, int target, int reason, for_each_cpu(i, &search_cpus) { struct rq *rq = cpu_rq(i); - trace_sched_cpu_load(cpu_rq(i), idle_cpu(i), sched_irqload(i), - power_cost(i, task_load(p) + - cpu_cravg_sync(i, sync)), - cpu_temp(i)); + trace_sched_cpu_load_wakeup(cpu_rq(i), idle_cpu(i), + sched_irqload(i), + power_cost(i, task_load(p) + cpu_cravg_sync(i, sync)), + cpu_temp(i)); if (skip_freq_domain(trq, rq, reason)) { cpumask_andnot(&search_cpus, &search_cpus, @@ -5233,7 +5233,7 @@ static void throttle_cfs_rq(struct cfs_rq *cfs_rq) raw_spin_unlock(&cfs_b->lock); /* Log effect on hmp stats after throttling */ - trace_sched_cpu_load(rq, idle_cpu(cpu_of(rq)), + trace_sched_cpu_load_cgroup(rq, idle_cpu(cpu_of(rq)), sched_irqload(cpu_of(rq)), power_cost(cpu_of(rq), 0), cpu_temp(cpu_of(rq))); @@ -5290,7 +5290,7 @@ void unthrottle_cfs_rq(struct cfs_rq *cfs_rq) resched_curr(rq); /* Log effect on hmp stats after un-throttling */ - trace_sched_cpu_load(rq, idle_cpu(cpu_of(rq)), + trace_sched_cpu_load_cgroup(rq, idle_cpu(cpu_of(rq)), sched_irqload(cpu_of(rq)), power_cost(cpu_of(rq), 0), cpu_temp(cpu_of(rq))); @@ -8068,7 +8068,7 @@ static inline void update_sg_lb_stats(struct lb_env *env, for_each_cpu_and(i, sched_group_cpus(group), env->cpus) { struct rq *rq = cpu_rq(i); - trace_sched_cpu_load(cpu_rq(i), idle_cpu(i), + trace_sched_cpu_load_lb(cpu_rq(i), idle_cpu(i), sched_irqload(i), power_cost(i, 0), cpu_temp(i)); diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c index f0f3cf71c538..1fd22539a334 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -1695,8 +1695,8 @@ static int find_lowest_rq_hmp(struct task_struct *task) cpu_load = scale_load_to_cpu( cpu_rq(i)->hmp_stats.cumulative_runnable_avg, i); cpu_cost = power_cost(i, cpu_cravg_sync(i, 0)); - trace_sched_cpu_load(cpu_rq(i), idle_cpu(i), sched_irqload(i), - cpu_cost, cpu_temp(i)); + trace_sched_cpu_load_wakeup(cpu_rq(i), idle_cpu(i), + sched_irqload(i), cpu_cost, cpu_temp(i)); if (power_delta_exceeded(cpu_cost, min_cost)) { if (cpu_cost > min_cost) diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 2045dec5e80c..85531d648cfb 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1292,6 +1292,9 @@ static inline void clear_reserved(int cpu) { } #define power_cost(...) 0 #define trace_sched_cpu_load(...) +#define trace_sched_cpu_load_lb(...) +#define trace_sched_cpu_load_cgroup(...) +#define trace_sched_cpu_load_wakeup(...) #endif /* CONFIG_SCHED_HMP */ |
