From: weilin.wang@intel.com
To: weilin.wang@intel.com, Namhyung Kim <namhyung@kernel.org>,
Ian Rogers <irogers@google.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
Kan Liang <kan.liang@linux.intel.com>
Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
Perry Taylor <perry.taylor@intel.com>,
Samantha Alt <samantha.alt@intel.com>,
Caleb Biggers <caleb.biggers@intel.com>
Subject: [RFC PATCH v8 7/7] perf stat: Skip read retire_lat counters and plugin retire_lat data from sampled data
Date: Wed, 15 May 2024 01:44:29 -0400 [thread overview]
Message-ID: <20240515054443.2824147-8-weilin.wang@intel.com> (raw)
In-Reply-To: <20240515054443.2824147-1-weilin.wang@intel.com>
From: Weilin Wang <weilin.wang@intel.com>
In current :R parsing implementation, the parser would recognize events with
retire_latency modifier and insert them into the evlist like a normal event.
Ideally, we need to avoid counting these events.
In this commit, at the stage of metric calculation, the code uses sampled
retire latency value instead of counted event value.
Signed-off-by: Weilin Wang <weilin.wang@intel.com>
---
tools/perf/arch/x86/util/evlist.c | 6 ++++++
tools/perf/util/evsel.h | 5 +++++
tools/perf/util/stat-display.c | 5 +++++
tools/perf/util/stat-shadow.c | 2 +-
4 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/tools/perf/arch/x86/util/evlist.c b/tools/perf/arch/x86/util/evlist.c
index b1ce0c52d88d..cebdd483149e 100644
--- a/tools/perf/arch/x86/util/evlist.c
+++ b/tools/perf/arch/x86/util/evlist.c
@@ -89,6 +89,12 @@ int arch_evlist__cmp(const struct evsel *lhs, const struct evsel *rhs)
return 1;
}
+ /* Retire latency event should not be group leader*/
+ if (lhs->retire_lat && !rhs->retire_lat)
+ return 1;
+ if (!lhs->retire_lat && rhs->retire_lat)
+ return -1;
+
/* Default ordering by insertion index. */
return lhs->core.idx - rhs->core.idx;
}
diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
index bd8e84954e34..aaf572317e92 100644
--- a/tools/perf/util/evsel.h
+++ b/tools/perf/util/evsel.h
@@ -303,6 +303,11 @@ static inline bool evsel__is_tool(const struct evsel *evsel)
return evsel->tool_event != PERF_TOOL_NONE;
}
+static inline bool evsel__is_retire_lat(const struct evsel *evsel)
+{
+ return evsel->retire_lat;
+}
+
const char *evsel__group_name(struct evsel *evsel);
int evsel__group_desc(struct evsel *evsel, char *buf, size_t size);
diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
index b9c3978cc99c..499fe0ddca93 100644
--- a/tools/perf/util/stat-display.c
+++ b/tools/perf/util/stat-display.c
@@ -1013,6 +1013,9 @@ static bool should_skip_zero_counter(struct perf_stat_config *config,
/* Tool events have the software PMU but are only gathered on 1. */
if (evsel__is_tool(counter))
return true;
+ /* Retire latency events are read from sampling data. */
+ if (evsel__is_retire_lat(counter))
+ return true;
/*
* Skip value 0 when it's an uncore event and the given aggr id
@@ -1653,6 +1656,8 @@ void evlist__print_counters(struct evlist *evlist, struct perf_stat_config *conf
} else {
print_metric_begin(config, evlist, &os, /*aggr_idx=*/0);
evlist__for_each_entry(evlist, counter) {
+ if (evsel__is_retire_lat(counter))
+ continue;
print_counter(config, counter, &os);
}
print_metric_end(config, &os);
diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c
index b97d23bfeac1..45e0b21a4724 100644
--- a/tools/perf/util/stat-shadow.c
+++ b/tools/perf/util/stat-shadow.c
@@ -384,7 +384,7 @@ static int prepare_metric(const struct metric_expr *mexp,
double val;
int source_count = 0;
- if (metric_events[i]->retire_lat)
+ if (evsel__is_retire_lat(metric_events[i]))
continue;
if (evsel__is_tool(metric_events[i])) {
--
2.43.0
prev parent reply other threads:[~2024-05-15 5:44 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-15 5:44 [RFC PATCH v8 0/7] TPEBS counting mode support weilin.wang
2024-05-15 5:44 ` [RFC PATCH v8 1/7] perf Document: Add TPEBS to Documents weilin.wang
2024-05-16 16:10 ` Ian Rogers
2024-05-16 17:37 ` Wang, Weilin
2024-05-17 21:28 ` Namhyung Kim
2024-05-15 5:44 ` [RFC PATCH v8 2/7] perf data: Allow to use given fd in data->file.fd weilin.wang
2024-05-16 16:11 ` Ian Rogers
2024-05-15 5:44 ` [RFC PATCH v8 3/7] perf stat: Fork and launch perf record when perf stat needs to get retire latency value for a metric weilin.wang
2024-05-16 16:43 ` Ian Rogers
2024-05-16 17:38 ` Wang, Weilin
2024-05-16 18:07 ` Ian Rogers
2024-05-16 18:16 ` Wang, Weilin
2024-05-17 21:43 ` Namhyung Kim
2024-05-17 21:57 ` Wang, Weilin
2024-05-21 0:10 ` Wang, Weilin
2024-05-21 5:42 ` Namhyung Kim
2024-05-21 16:23 ` Wang, Weilin
2024-05-15 5:44 ` [RFC PATCH v8 4/7] perf stat: Add retire latency values into the expr_parse_ctx to prepare for final metric calculation weilin.wang
2024-05-16 16:44 ` Ian Rogers
2024-05-15 5:44 ` [RFC PATCH v8 5/7] perf stat: Add retire latency print functions to print out at the very end of print out weilin.wang
2024-05-16 16:47 ` Ian Rogers
2024-05-16 17:51 ` Wang, Weilin
2024-05-16 18:08 ` Ian Rogers
2024-05-15 5:44 ` [RFC PATCH v8 6/7] perf vendor events intel: Add MTL metric json files weilin.wang
2024-05-16 16:57 ` Ian Rogers
2024-05-16 17:44 ` Wang, Weilin
2024-05-15 5:44 ` weilin.wang [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240515054443.2824147-8-weilin.wang@intel.com \
--to=weilin.wang@intel.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=caleb.biggers@intel.com \
--cc=irogers@google.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=perry.taylor@intel.com \
--cc=peterz@infradead.org \
--cc=samantha.alt@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).