Add trace event for sched group energy calculation.
Signed-off-by: Leo Yan leo.yan@linaro.org --- include/trace/events/sched.h | 45 ++++++++++++++++++++++++++++++++++++++++++++ kernel/sched/fair.c | 5 +++++ 2 files changed, 50 insertions(+) mode change 100644 => 100755 include/trace/events/sched.h
diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h old mode 100644 new mode 100755 index 433d391..d002d01 --- a/include/trace/events/sched.h +++ b/include/trace/events/sched.h @@ -1141,6 +1141,51 @@ TRACE_EVENT(walt_migration_update_sum, ); #endif /* CONFIG_SCHED_WALT */
+/* + * Tracepoint for schedule group energy + */ +TRACE_EVENT(sched_group_energy, + + TP_PROTO(const struct cpumask *mask, + int util_delta, int cap_idx, int idle_idx, + unsigned long group_util, + int sg_busy_energy, int sg_idle_energy, + int total_energy), + + TP_ARGS(mask, util_delta, cap_idx, idle_idx, group_util, + sg_busy_energy, sg_idle_energy, total_energy), + + TP_STRUCT__entry( + __bitmask(cpumask, num_possible_cpus() ) + __field( int, util_delta ) + __field( int, cap_idx ) + __field( int, idle_idx ) + __field( unsigned long, group_util ) + __field( int, sg_busy_energy ) + __field( int, sg_idle_energy ) + __field( int, total_energy ) + ), + + TP_fast_assign( + __assign_bitmask(cpumask, cpumask_bits(mask), + num_possible_cpus()); + __entry->util_delta = util_delta; + __entry->cap_idx = cap_idx; + __entry->idle_idx = idle_idx; + __entry->group_util = group_util; + __entry->sg_busy_energy = sg_busy_energy; + __entry->sg_idle_energy = sg_idle_energy; + __entry->total_energy = total_energy; + ), + + TP_printk("cpus=%s util_delta=%d cap_idx=%d idle_idx=%d " + "group_util=%lu sg_busy_energy=%d sg_idle_energy=%d total_energy=%d", + __get_bitmask(cpumask), __entry->util_delta, + __entry->cap_idx, __entry->idle_idx, + __entry->group_util, __entry->sg_busy_energy, + __entry->sg_idle_energy, __entry->total_energy) +); + #endif /* CONFIG_SMP */
#endif /* _TRACE_SCHED_H */ diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 3278b563..aab8c1c 100755 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -5564,6 +5564,11 @@ static int sched_group_energy(struct task_energy *tsk_nrg)
total_energy += sg_busy_energy + sg_idle_energy;
+ trace_sched_group_energy(sched_group_cpus(sg), + tsk_nrg->task_util, cap_idx, idle_idx, + group_util, sg_busy_energy, + sg_idle_energy, total_energy); + if (!sd->child) cpumask_xor(&visit_cpus, &visit_cpus, sched_group_cpus(sg));
-- 1.9.1