summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorSyed Rameez Mustafa <rameezmustafa@codeaurora.org>2015-11-02 15:08:20 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:02:38 -0700
commit280b8668481d732d7e2602cb719b517f23f329b7 (patch)
treed8be09ecdc4301276dc0a583184f55088595aec5 /kernel
parentf406df7c3588d9a605639e9f72eb894898cfba02 (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.c14
-rw-r--r--kernel/sched/rt.c4
-rw-r--r--kernel/sched/sched.h3
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 */