summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorSrivatsa Vaddagiri <vatsa@codeaurora.org>2014-05-12 17:59:05 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 19:59:36 -0700
commit7f78facb9a3dea1bcad4b41a4d253fa698ed07e8 (patch)
treefa6125c562fe3cf49b7351a59169ef55678c5eb1 /kernel
parent53a4978f8044d16f8e5ecfe353f10cab5ab92022 (diff)
sched: Add new trace events
Add trace events for update_task_ravg(), update_history(), and set_task_cpu(). These tracepoints are useful for monitoring the per-task and per-runqueue demand statistics. Change-Id: Ibec9f945074ff31d1fc1a76ae37c40c8fea8cda9 Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched/core.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 8888c1081ef3..69f8aef5a849 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -91,6 +91,9 @@
#define CREATE_TRACE_POINTS
#include <trace/events/sched.h>
+const char *task_event_names[] = {"PUT_PREV_TASK", "PICK_NEXT_TASK",
+ "TASK_WAKE", "TASK_MIGRATE", "TASK_UPDATE"};
+
ATOMIC_NOTIFIER_HEAD(migration_notifier_head);
ATOMIC_NOTIFIER_HEAD(load_alert_notifier_head);
@@ -1072,12 +1075,6 @@ void check_preempt_curr(struct rq *rq, struct task_struct *p, int flags)
rq_clock_skip_update(rq, true);
}
-#define PUT_PREV_TASK 0
-#define PICK_NEXT_TASK 1
-#define TASK_WAKE 2
-#define TASK_MIGRATE 3
-#define TASK_UPDATE 4
-
#if defined(CONFIG_SCHED_FREQ_INPUT) || defined(CONFIG_SCHED_HMP)
/* Window size (in ns) */
@@ -1212,6 +1209,8 @@ compute_demand:
if (p->sched_class == &fair_sched_class)
inc_nr_big_small_task(rq, p);
}
+ trace_sched_update_history(rq, p, runtime, samples, update_sum,
+ new_window, event);
}
static int __init set_sched_ravg_window(char *str)
@@ -1352,6 +1351,8 @@ static void update_task_ravg(struct task_struct *p, struct rq *rq,
if (event == PICK_NEXT_TASK && !p->ravg.sum)
rq->curr_runnable_sum += p->ravg.partial_demand;
+ trace_sched_update_task_ravg(p, rq, event, wallclock);
+
p->ravg.mark_start = wallclock;
}
@@ -1839,6 +1840,9 @@ void set_task_cpu(struct task_struct *p, unsigned int new_cpu)
BUG_ON((int)src_rq->prev_runnable_sum < 0);
BUG_ON((int)src_rq->curr_runnable_sum < 0);
+ trace_sched_migration_update_sum(src_rq);
+ trace_sched_migration_update_sum(dest_rq);
+
if (p->state == TASK_WAKING)
double_rq_unlock(src_rq, dest_rq);