DEBUG: sched/tune: add tracepoint for energy_diff() values

Change-Id: Id8fafbd85f6d81248f322e073ee790a7ceec0bf7
Signed-off-by: Patrick Bellasi <patrick.bellasi@arm.com>
This commit is contained in:
Patrick Bellasi 2016-01-14 18:47:21 +00:00 committed by Amit Pundir
parent 88c4572243
commit 486c7afa76
2 changed files with 67 additions and 1 deletions

View file

@ -843,6 +843,63 @@ TRACE_EVENT(sched_boost_task,
__entry->margin) __entry->margin)
); );
/*
* Tracepoint for accounting sched group energy
*/
TRACE_EVENT(sched_energy_diff,
TP_PROTO(struct task_struct *tsk, int scpu, int dcpu, int udelta,
int nrgb, int nrga, int nrgd, int capb, int capa, int capd,
int nrgn, int nrgp),
TP_ARGS(tsk, scpu, dcpu, udelta,
nrgb, nrga, nrgd, capb, capa, capd,
nrgn, nrgp),
TP_STRUCT__entry(
__array( char, comm, TASK_COMM_LEN )
__field( pid_t, pid )
__field( int, scpu )
__field( int, dcpu )
__field( int, udelta )
__field( int, nrgb )
__field( int, nrga )
__field( int, nrgd )
__field( int, capb )
__field( int, capa )
__field( int, capd )
__field( int, nrgn )
__field( int, nrgp )
),
TP_fast_assign(
memcpy(__entry->comm, tsk->comm, TASK_COMM_LEN);
__entry->pid = tsk->pid;
__entry->scpu = scpu;
__entry->dcpu = dcpu;
__entry->udelta = udelta;
__entry->nrgb = nrgb;
__entry->nrga = nrga;
__entry->nrgd = nrgd;
__entry->capb = capb;
__entry->capa = capa;
__entry->capd = capd;
__entry->nrgn = nrgn;
__entry->nrgp = nrgp;
),
TP_printk("pid=%d comm=%s "
"src_cpu=%d dst_cpu=%d usage_delta=%d "
"nrg_before=%d nrg_after=%d nrg_diff=%d "
"cap_before=%d cap_after=%d cap_delta=%d "
"nrg_delta=%d nrg_payoff=%d",
__entry->pid, __entry->comm,
__entry->scpu, __entry->dcpu, __entry->udelta,
__entry->nrgb, __entry->nrga, __entry->nrgd,
__entry->capb, __entry->capa, __entry->capd,
__entry->nrgn, __entry->nrgp)
);
#endif /* _TRACE_SCHED_H */ #endif /* _TRACE_SCHED_H */
/* This part must be outside protection */ /* This part must be outside protection */

View file

@ -5019,6 +5019,7 @@ static int energy_diff(struct energy_env *eenv)
struct sched_domain *sd; struct sched_domain *sd;
struct sched_group *sg; struct sched_group *sg;
int sd_cpu = -1, energy_before = 0, energy_after = 0; int sd_cpu = -1, energy_before = 0, energy_after = 0;
int result;
struct energy_env eenv_before = { struct energy_env eenv_before = {
.util_delta = 0, .util_delta = 0,
@ -5062,7 +5063,15 @@ static int energy_diff(struct energy_env *eenv)
eenv->nrg.diff = eenv->nrg.after - eenv->nrg.before; eenv->nrg.diff = eenv->nrg.after - eenv->nrg.before;
eenv->payoff = 0; eenv->payoff = 0;
return energy_diff_evaluate(eenv); result = energy_diff_evaluate(eenv);
trace_sched_energy_diff(eenv->task,
eenv->src_cpu, eenv->dst_cpu, eenv->util_delta,
eenv->nrg.before, eenv->nrg.after, eenv->nrg.diff,
eenv->cap.before, eenv->cap.after, eenv->cap.delta,
eenv->nrg.delta, eenv->payoff);
return result;
} }
/* /*