Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae54c774 authored by Patrick Bellasi's avatar Patrick Bellasi Committed by John Stultz
Browse files

DEBUG: sched/tune: add tracepoint on P-E space filtering



Change-Id: I31dfed67c0486713b88efb75df767329f2802e06
Signed-off-by: default avatarPatrick Bellasi <patrick.bellasi@arm.com>
parent 4525aa34
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -851,6 +851,41 @@ TRACE_EVENT(sched_energy_diff,
		__entry->nrgn, __entry->nrgp)
);

/*
 * Tracepoint for schedtune_tasks_update
 */
TRACE_EVENT(sched_tune_filter,

	TP_PROTO(int nrg_delta, int cap_delta,
		 int nrg_gain,  int cap_gain,
		 int payoff, int region),

	TP_ARGS(nrg_delta, cap_delta, nrg_gain, cap_gain, payoff, region),

	TP_STRUCT__entry(
		__field( int,	nrg_delta	)
		__field( int,	cap_delta	)
		__field( int,	nrg_gain	)
		__field( int,	cap_gain	)
		__field( int,	payoff		)
		__field( int,	region		)
	),

	TP_fast_assign(
		__entry->nrg_delta	= nrg_delta;
		__entry->cap_delta	= cap_delta;
		__entry->nrg_gain	= nrg_gain;
		__entry->cap_gain	= cap_gain;
		__entry->payoff		= payoff;
		__entry->region		= region;
	),

	TP_printk("nrg_delta=%d cap_delta=%d nrg_gain=%d cap_gain=%d payoff=%d region=%d",
		__entry->nrg_delta, __entry->cap_delta,
		__entry->nrg_gain, __entry->cap_gain,
		__entry->payoff, __entry->region)
);

#endif /* _TRACE_SCHED_H */

/* This part must be outside protection */
+26 −4
Original line number Diff line number Diff line
@@ -70,6 +70,13 @@ __schedtune_accept_deltas(int nrg_delta, int cap_delta,
		 */
		payoff  = nrg_delta * threshold_gains[perf_boost_idx].cap_gain;
		payoff -= cap_delta * threshold_gains[perf_boost_idx].nrg_gain;

		trace_sched_tune_filter(
				nrg_delta, cap_delta,
				threshold_gains[perf_boost_idx].nrg_gain,
				threshold_gains[perf_boost_idx].cap_gain,
				payoff, 8);

		return payoff;
	}

@@ -84,6 +91,13 @@ __schedtune_accept_deltas(int nrg_delta, int cap_delta,
		 */
		payoff  = cap_delta * threshold_gains[perf_constrain_idx].nrg_gain;
		payoff -= nrg_delta * threshold_gains[perf_constrain_idx].cap_gain;

		trace_sched_tune_filter(
				nrg_delta, cap_delta,
				threshold_gains[perf_constrain_idx].nrg_gain,
				threshold_gains[perf_constrain_idx].cap_gain,
				payoff, 6);

		return payoff;
	}

@@ -155,12 +169,16 @@ schedtune_accept_deltas(int nrg_delta, int cap_delta,
	int perf_constrain_idx;

	/* Optimal (O) region */
	if (nrg_delta < 0 && cap_delta > 0)
	if (nrg_delta < 0 && cap_delta > 0) {
		trace_sched_tune_filter(nrg_delta, cap_delta, 0, 0, 1, 0);
		return INT_MAX;
	}

	/* Suboptimal (S) region */
	if (nrg_delta > 0 && cap_delta < 0)
	if (nrg_delta > 0 && cap_delta < 0) {
		trace_sched_tune_filter(nrg_delta, cap_delta, 0, 0, -1, 5);
		return -INT_MAX;
	}

	/* Get task specific perf Boost/Constraints indexes */
	rcu_read_lock();
@@ -531,12 +549,16 @@ schedtune_accept_deltas(int nrg_delta, int cap_delta,
			struct task_struct *task)
{
	/* Optimal (O) region */
	if (nrg_delta < 0 && cap_delta > 0)
	if (nrg_delta < 0 && cap_delta > 0) {
		trace_sched_tune_filter(nrg_delta, cap_delta, 0, 0, 1, 0);
		return INT_MAX;
	}

	/* Suboptimal (S) region */
	if (nrg_delta > 0 && cap_delta < 0)
	if (nrg_delta > 0 && cap_delta < 0) {
		trace_sched_tune_filter(nrg_delta, cap_delta, 0, 0, -1, 5);
		return -INT_MAX;
	}

	return __schedtune_accept_deltas(nrg_delta, cap_delta,
			perf_boost_idx, perf_constrain_idx);