]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
perf intel-tpebs: Use stats for retirement latency statistics
authorIan Rogers <irogers@google.com>
Mon, 14 Apr 2025 17:41:31 +0000 (10:41 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 25 Apr 2025 15:31:32 +0000 (12:31 -0300)
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>
tools/perf/util/intel-tpebs.c

index dc4985728b29a9f90ae220854a55bd958e7b4c23..a96abec0c65cf3967be4224d4f1a08cc8cc00e4a 100644 (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) {