Loading include/trace/events/sched.h +57 −0 Original line number Diff line number Diff line Loading @@ -794,6 +794,63 @@ TRACE_EVENT(sched_boost_task, __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 */ /* This part must be outside protection */ Loading kernel/sched/fair.c +10 −1 Original line number Diff line number Diff line Loading @@ -4998,6 +4998,7 @@ static int energy_diff(struct energy_env *eenv) struct sched_domain *sd; struct sched_group *sg; int sd_cpu = -1, energy_before = 0, energy_after = 0; int result; struct energy_env eenv_before = { .util_delta = 0, Loading Loading @@ -5041,7 +5042,15 @@ static int energy_diff(struct energy_env *eenv) eenv->nrg.diff = eenv->nrg.after - eenv->nrg.before; 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; } /* Loading Loading
include/trace/events/sched.h +57 −0 Original line number Diff line number Diff line Loading @@ -794,6 +794,63 @@ TRACE_EVENT(sched_boost_task, __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 */ /* This part must be outside protection */ Loading
kernel/sched/fair.c +10 −1 Original line number Diff line number Diff line Loading @@ -4998,6 +4998,7 @@ static int energy_diff(struct energy_env *eenv) struct sched_domain *sd; struct sched_group *sg; int sd_cpu = -1, energy_before = 0, energy_after = 0; int result; struct energy_env eenv_before = { .util_delta = 0, Loading Loading @@ -5041,7 +5042,15 @@ static int energy_diff(struct energy_env *eenv) eenv->nrg.diff = eenv->nrg.after - eenv->nrg.before; 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; } /* Loading