Commit 3533b56d authored by Ian Rogers's avatar Ian Rogers Committed by Arnaldo Carvalho de Melo
Browse files

perf intel-tpebs: Use stats for retirement latency statistics



struct stats provides access to mean, min and max.

It also provides uniformity with statistics code used elsewhere in perf.

Reviewed-by: default avatarKan Liang <kan.liang@linux.intel.com>
Signed-off-by: default avatarIan Rogers <irogers@google.com>
Tested-by: default avatarWeilin Wang <weilin.wang@intel.com>
Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
Cc: Andreas Färber <afaerber@suse.de>
Cc: Caleb Biggers <caleb.biggers@intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: Perry Taylor <perry.taylor@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Falcon <thomas.falcon@intel.com>
Link: https://lore.kernel.org/r/20250414174134.3095492-14-irogers@google.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 1ddf95f6
Loading
Loading
Loading
Loading
+5 −10
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
#include "evsel.h"
#include "mutex.h"
#include "session.h"
#include "stat.h"
#include "tool.h"
#include "cpumap.h"
#include "metricgroup.h"
@@ -42,12 +43,8 @@ struct tpebs_retire_lat {
	struct evsel *evsel;
	/** @event: Event passed to perf record. */
	char *event;
	/* Count of retire_latency values found in sample data */
	size_t count;
	/* Sum of all the retire_latency values in sample data */
	int sum;
	/* Average of retire_latency, val = sum / count */
	double val;
	/** @stats: Recorded retirement latency stats. */
	struct stats stats;
	/* Has the event been sent to perf record? */
	bool started;
};
@@ -145,9 +142,7 @@ static int process_sample_event(const struct perf_tool *tool __maybe_unused,
	 * latency value will be used. Save the number of samples and the sum of
	 * retire latency value for each event.
	 */
	t->count += 1;
	t->sum += sample->retire_lat;
	t->val = (double) t->sum / t->count;
	update_stats(&t->stats, sample->retire_lat);
	mutex_unlock(tpebs_mtx_get());
	return 0;
}
@@ -522,7 +517,7 @@ int evsel__tpebs_read(struct evsel *evsel, int cpu_map_idx, int thread)
			return ret;
		mutex_lock(tpebs_mtx_get());
	}
	val = rint(t->val);
	val = rint(t->stats.mean);
	mutex_unlock(tpebs_mtx_get());

	if (old_count) {