diff options
| author | Steve Muckle <smuckle@codeaurora.org> | 2014-11-02 17:41:32 -0800 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:01:14 -0700 |
| commit | 636a5749c8706da90cfb1c607df53f3f657fb76f (patch) | |
| tree | 4d036f797ef4f0d69b10cfdd263f095f80de4f7d | |
| parent | bd4d0eade78733d06017a7f022051ee5f077e735 (diff) | |
sched: extend sched_task_load tracepoint to indicate sync wakeup
Sync wakeups provide a hint to the scheduler about upcoming task
activity. Knowing which wakeups are sync wakeups from logs will
assist in workload analysis.
Change-Id: I6ffe73f2337e56b8234d4097069d5d70ab045eda
Signed-off-by: Steve Muckle <smuckle@codeaurora.org>
| -rw-r--r-- | include/trace/events/sched.h | 12 | ||||
| -rw-r--r-- | kernel/sched/fair.c | 2 |
2 files changed, 9 insertions, 5 deletions
diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h index 82bd9f92a7e2..a60fc80f66e3 100644 --- a/include/trace/events/sched.h +++ b/include/trace/events/sched.h @@ -115,9 +115,10 @@ TRACE_EVENT(sched_enq_deq_task, TRACE_EVENT(sched_task_load, - TP_PROTO(struct task_struct *p, int small_task, int boost, int reason), + TP_PROTO(struct task_struct *p, int small_task, int boost, int reason, + int sync), - TP_ARGS(p, small_task, boost, reason), + TP_ARGS(p, small_task, boost, reason, sync), TP_STRUCT__entry( __array( char, comm, TASK_COMM_LEN ) @@ -129,6 +130,7 @@ TRACE_EVENT(sched_task_load, __field( int, small_task ) __field( int, boost ) __field( int, reason ) + __field( int, sync ) ), TP_fast_assign( @@ -141,12 +143,14 @@ TRACE_EVENT(sched_task_load, __entry->small_task = small_task; __entry->boost = boost; __entry->reason = reason; + __entry->sync = sync; ), - TP_printk("%d (%s): sum=%u, sum_scaled=%u, period=%u demand=%u small=%d boost=%d reason=%d", + TP_printk("%d (%s): sum=%u, sum_scaled=%u, period=%u demand=%u small=%d boost=%d reason=%d sync=%d", __entry->pid, __entry->comm, __entry->sum, __entry->sum_scaled, __entry->period, __entry->demand, - __entry->small_task, __entry->boost, __entry->reason) + __entry->small_task, __entry->boost, __entry->reason, + __entry->sync) ); TRACE_EVENT(sched_cpu_load, diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 8bdcf7485962..75f1862e86d8 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -3229,7 +3229,7 @@ static int select_best_cpu(struct task_struct *p, int target, int reason, int cstate, min_cstate = INT_MAX; int prefer_idle = reason ? 1 : sysctl_sched_prefer_idle; - trace_sched_task_load(p, small_task, boost, reason); + trace_sched_task_load(p, small_task, boost, reason, sync); if (small_task && !boost) { best_cpu = best_small_task_cpu(p, sync); |
