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: Kan Liang <kan.liang@linux.intel.com>
Signed-off-by: Ian Rogers <irogers@google.com>
Tested-by: Weilin Wang <weilin.wang@intel.com>
Acked-by: Namhyung 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: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Ian Rogers 2025-04-14 10:41:31 -07:00 committed by Arnaldo Carvalho de Melo
parent 1ddf95f6d8
commit 3533b56d22

View File

@ -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) {