From: Jin Yao <yao.jin@linux.intel.com>
To: acme@kernel.org, jolsa@kernel.org, peterz@infradead.org,
mingo@redhat.com, alexander.shishkin@linux.intel.com
Cc: Linux-kernel@vger.kernel.org, ak@linux.intel.com,
kan.liang@intel.com, yao.jin@intel.com,
Jin Yao <yao.jin@linux.intel.com>
Subject: [PATCH v3 10/27] perf parse-events: Create two hybrid raw events
Date: Mon, 29 Mar 2021 15:00:29 +0800 [thread overview]
Message-ID: <20210329070046.8815-11-yao.jin@linux.intel.com> (raw)
In-Reply-To: <20210329070046.8815-1-yao.jin@linux.intel.com>
On hybrid platform, same raw event is possible to be available on
both cpu_core pmu and cpu_atom pmu. So it's supported to create
two raw events for one event encoding.
# ./perf stat -e r3c -a -vv -- sleep 1
Control descriptor is not initialized
------------------------------------------------------------
perf_event_attr:
type 4
size 120
config 0x3c
sample_type IDENTIFIER
read_format TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING
disabled 1
inherit 1
exclude_guest 1
------------------------------------------------------------
sys_perf_event_open: pid -1 cpu 0 group_fd -1 flags 0x8 = 3
------------------------------------------------------------
perf_event_attr:
type 4
size 120
config 0x3c
sample_type IDENTIFIER
read_format TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING
disabled 1
inherit 1
exclude_guest 1
------------------------------------------------------------
sys_perf_event_open: pid -1 cpu 1 group_fd -1 flags 0x8 = 4
------------------------------------------------------------
...
------------------------------------------------------------
perf_event_attr:
type 4
size 120
config 0x3c
sample_type IDENTIFIER
read_format TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING
disabled 1
inherit 1
exclude_guest 1
------------------------------------------------------------
sys_perf_event_open: pid -1 cpu 15 group_fd -1 flags 0x8 = 19
------------------------------------------------------------
perf_event_attr:
type 10
size 120
config 0x3c
sample_type IDENTIFIER
read_format TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING
disabled 1
inherit 1
exclude_guest 1
------------------------------------------------------------
sys_perf_event_open: pid -1 cpu 16 group_fd -1 flags 0x8 = 20
------------------------------------------------------------
perf_event_attr:
type 10
size 120
config 0x3c
sample_type IDENTIFIER
read_format TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING
disabled 1
inherit 1
exclude_guest 1
------------------------------------------------------------
sys_perf_event_open: pid -1 cpu 17 group_fd -1 flags 0x8 = 21
------------------------------------------------------------
...
------------------------------------------------------------
perf_event_attr:
type 10
size 120
config 0x3c
sample_type IDENTIFIER
read_format TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING
disabled 1
inherit 1
exclude_guest 1
------------------------------------------------------------
sys_perf_event_open: pid -1 cpu 23 group_fd -1 flags 0x8 = 27
r3c: 0: 295983 1001500321 1001500321
r3c: 1: 66453 1001536385 1001536385
r3c: 2: 156191 1001559687 1001559687
r3c: 3: 177709 1001590937 1001590937
r3c: 4: 110819 1001674167 1001674167
r3c: 5: 368516 1001693927 1001693927
r3c: 6: 185745 1001782896 1001782896
r3c: 7: 735332 1001567982 1001567982
r3c: 8: 1783115 1001595406 1001595406
r3c: 9: 90088 1001606000 1001606000
r3c: 10: 409253 1001697624 1001697624
r3c: 11: 2942563 1001721371 1001721371
r3c: 12: 100495 1001740753 1001740753
r3c: 13: 62970 1001769269 1001769269
r3c: 14: 201978 1001799810 1001799810
r3c: 15: 1401633 1001829314 1001829314
r3c: 0: 328088 1001962968 1001962968
r3c: 1: 257037 1001990202 1001990202
r3c: 2: 168703 1002065267 1002065267
r3c: 3: 187959 1002115120 1002115120
r3c: 4: 126987 1002151672 1002151672
r3c: 5: 79831 1002202614 1002202614
r3c: 6: 72101 1002214094 1002214094
r3c: 7: 442006 1002248710 1002248710
r3c: 9088843 16026665849 16026665849
r3c: 1662712 8016950647 8016950647
Performance counter stats for 'system wide':
9,088,843 cpu_core/r3c/
1,662,712 cpu_atom/r3c/
1.003722876 seconds time elapsed
type 4 is cpu_core pmu type.
type 10 is cpu_atom pmu type.
Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
---
v3:
- Raw event creation is moved to parse-events-hybrid.c.
tools/perf/util/parse-events-hybrid.c | 38 +++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/tools/perf/util/parse-events-hybrid.c b/tools/perf/util/parse-events-hybrid.c
index ff2909bfbf86..8a630cbab8f3 100644
--- a/tools/perf/util/parse-events-hybrid.c
+++ b/tools/perf/util/parse-events-hybrid.c
@@ -74,6 +74,41 @@ static int add_hw_hybrid(struct parse_events_state *parse_state,
return 0;
}
+static int create_raw_event_hybrid(int *idx, struct list_head *list,
+ struct perf_event_attr *attr, char *name,
+ struct list_head *config_terms,
+ struct perf_pmu *pmu)
+{
+ struct evsel *evsel;
+
+ attr->type = pmu->type;
+ evsel = parse_events__add_event_hybrid(list, idx, attr, name,
+ pmu, config_terms);
+ if (evsel)
+ evsel->pmu_name = strdup(pmu->name);
+ else
+ return -ENOMEM;
+
+ return 0;
+}
+
+static int add_raw_hybrid(struct parse_events_state *parse_state,
+ struct list_head *list, struct perf_event_attr *attr,
+ char *name, struct list_head *config_terms)
+{
+ struct perf_pmu *pmu;
+ int ret;
+
+ perf_pmu__for_each_hybrid_pmu(pmu) {
+ ret = create_raw_event_hybrid(&parse_state->idx, list, attr,
+ name, config_terms, pmu);
+ if (ret)
+ return ret;
+ }
+
+ return 0;
+}
+
int parse_events__add_numeric_hybrid(struct parse_events_state *parse_state,
struct list_head *list,
struct perf_event_attr *attr,
@@ -91,6 +126,9 @@ int parse_events__add_numeric_hybrid(struct parse_events_state *parse_state,
if (attr->type != PERF_TYPE_RAW) {
return add_hw_hybrid(parse_state, list, attr, name,
config_terms);
+ } else {
+ return add_raw_hybrid(parse_state, list, attr, name,
+ config_terms);
}
return -1;
--
2.17.1
next prev parent reply other threads:[~2021-03-29 7:03 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-29 7:00 [PATCH v3 00/27] perf tool: AlderLake hybrid support series 1 Jin Yao
2021-03-29 7:00 ` [PATCH v3 01/27] tools headers uapi: Update tools's copy of linux/perf_event.h Jin Yao
2021-03-29 7:00 ` [PATCH v3 02/27] perf jevents: Support unit value "cpu_core" and "cpu_atom" Jin Yao
2021-03-29 7:00 ` [PATCH v3 03/27] perf pmu: Simplify arguments of __perf_pmu__new_alias Jin Yao
2021-03-29 7:00 ` [PATCH v3 04/27] perf pmu: Save pmu name Jin Yao
2021-03-29 7:00 ` [PATCH v3 05/27] perf pmu: Save detected hybrid pmus to a global pmu list Jin Yao
2021-03-29 7:00 ` [PATCH v3 06/27] perf pmu: Add hybrid helper functions Jin Yao
2021-03-29 7:00 ` [PATCH v3 07/27] perf stat: Uniquify hybrid event name Jin Yao
2021-03-29 7:00 ` [PATCH v3 08/27] perf parse-events: Create two hybrid hardware events Jin Yao
2021-03-29 7:00 ` [PATCH v3 09/27] perf parse-events: Create two hybrid cache events Jin Yao
2021-04-09 13:48 ` Jiri Olsa
2021-04-12 1:15 ` Jin, Yao
2021-03-29 7:00 ` Jin Yao [this message]
2021-04-09 13:49 ` [PATCH v3 10/27] perf parse-events: Create two hybrid raw events Jiri Olsa
2021-04-12 1:14 ` Jin, Yao
2021-03-29 7:00 ` [PATCH v3 11/27] perf pmu: Support 'cycles' and 'branches' inside hybrid PMU Jin Yao
2021-04-09 13:48 ` Jiri Olsa
2021-04-12 2:01 ` Jin, Yao
2021-03-29 7:00 ` [PATCH v3 12/27] perf parse-events: Support no alias assigned event " Jin Yao
2021-04-09 13:47 ` Jiri Olsa
2021-04-12 2:51 ` Jin, Yao
2021-04-13 12:36 ` Jiri Olsa
2021-04-15 11:03 ` Jiri Olsa
2021-04-15 13:36 ` Jin, Yao
2021-04-15 14:11 ` Jiri Olsa
2021-04-15 14:53 ` Jin, Yao
2021-04-15 19:39 ` Jiri Olsa
2021-04-16 1:57 ` Jin, Yao
2021-03-29 7:00 ` [PATCH v3 13/27] perf record: Create two hybrid 'cycles' events by default Jin Yao
2021-03-29 7:00 ` [PATCH v3 14/27] perf stat: Add default hybrid events Jin Yao
2021-03-29 7:00 ` [PATCH v3 15/27] perf stat: Filter out unmatched aggregation for hybrid event Jin Yao
2021-03-29 7:00 ` [PATCH v3 16/27] perf stat: Warn group events from different hybrid PMU Jin Yao
2021-03-29 7:00 ` [PATCH v3 17/27] perf script: Support PERF_TYPE_HARDWARE_PMU and PERF_TYPE_HW_CACHE_PMU Jin Yao
2021-03-29 7:00 ` [PATCH v3 18/27] perf record: Uniquify hybrid event name Jin Yao
2021-03-29 7:00 ` [PATCH v3 19/27] perf tests: Add hybrid cases for 'Parse event definition strings' test Jin Yao
2021-03-29 7:00 ` [PATCH v3 20/27] perf tests: Add hybrid cases for 'Roundtrip evsel->name' test Jin Yao
2021-03-29 7:00 ` [PATCH v3 21/27] perf tests: Skip 'Setup struct perf_event_attr' test for hybrid Jin Yao
2021-03-29 7:00 ` [PATCH v3 22/27] perf tests: Support 'Track with sched_switch' " Jin Yao
2021-03-29 7:00 ` [PATCH v3 23/27] perf tests: Support 'Parse and process metrics' " Jin Yao
2021-03-29 7:00 ` [PATCH v3 24/27] perf tests: Support 'Session topology' " Jin Yao
2021-03-29 7:00 ` [PATCH v3 25/27] perf tests: Support 'Convert perf time to TSC' " Jin Yao
2021-03-29 7:00 ` [PATCH v3 26/27] perf tests: Skip 'perf stat metrics (shadow stat) test' " Jin Yao
2021-03-29 7:00 ` [PATCH v3 27/27] perf Documentation: Document intel-hybrid support Jin Yao
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=20210329070046.8815-11-yao.jin@linux.intel.com \
--to=yao.jin@linux.intel.com \
--cc=Linux-kernel@vger.kernel.org \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@intel.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=yao.jin@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).