From 636a5749c8706da90cfb1c607df53f3f657fb76f Mon Sep 17 00:00:00 2001 From: Steve Muckle Date: Sun, 2 Nov 2014 17:41:32 -0800 Subject: 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 --- include/trace/events/sched.h | 12 ++++++++---- 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); -- cgit v1.2.3