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 v4 10/25] perf parse-events: Create two hybrid raw events
Date: Fri, 16 Apr 2021 22:05:02 +0800 [thread overview]
Message-ID: <20210416140517.18206-11-yao.jin@linux.intel.com> (raw)
In-Reply-To: <20210416140517.18206-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. It's supported to create
two raw events for one event encoding. For raw events, the
attr.type is PMU type.
# 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 15 group_fd -1 flags 0x8 = 19
------------------------------------------------------------
perf_event_attr:
type 8
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 8
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: 434449 1001412521 1001412521
r3c: 1: 173162 1001482031 1001482031
r3c: 2: 231710 1001524974 1001524974
r3c: 3: 110012 1001563523 1001563523
r3c: 4: 191517 1001593221 1001593221
r3c: 5: 956458 1001628147 1001628147
r3c: 6: 416969 1001715626 1001715626
r3c: 7: 1047527 1001596650 1001596650
r3c: 8: 103877 1001633520 1001633520
r3c: 9: 70571 1001637898 1001637898
r3c: 10: 550284 1001714398 1001714398
r3c: 11: 1257274 1001738349 1001738349
r3c: 12: 107797 1001801432 1001801432
r3c: 13: 67471 1001836281 1001836281
r3c: 14: 286782 1001923161 1001923161
r3c: 15: 815509 1001952550 1001952550
r3c: 0: 95994 1002071117 1002071117
r3c: 1: 105570 1002142438 1002142438
r3c: 2: 115921 1002189147 1002189147
r3c: 3: 72747 1002238133 1002238133
r3c: 4: 103519 1002276753 1002276753
r3c: 5: 121382 1002315131 1002315131
r3c: 6: 80298 1002248050 1002248050
r3c: 7: 466790 1002278221 1002278221
r3c: 6821369 16026754282 16026754282
r3c: 1162221 8017758990 8017758990
Performance counter stats for 'system wide':
6,821,369 cpu_core/r3c/
1,162,221 cpu_atom/r3c/
1.002289965 seconds time elapsed
Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
---
v4:
- Directly return add_raw_hybrid().
v3:
- Raw event creation is moved to parse-events-hybrid.c.
tools/perf/util/parse-events-hybrid.c | 38 ++++++++++++++++++++++++++-
1 file changed, 37 insertions(+), 1 deletion(-)
diff --git a/tools/perf/util/parse-events-hybrid.c b/tools/perf/util/parse-events-hybrid.c
index 7a7e065d2b5f..e27b747080e1 100644
--- a/tools/perf/util/parse-events-hybrid.c
+++ b/tools/perf/util/parse-events-hybrid.c
@@ -77,6 +77,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,
@@ -96,7 +131,8 @@ int parse_events__add_numeric_hybrid(struct parse_events_state *parse_state,
config_terms);
}
- return -1;
+ return add_raw_hybrid(parse_state, list, attr, name,
+ config_terms);
}
int parse_events__add_cache_hybrid(struct list_head *list, int *idx,
--
2.17.1
next prev parent reply other threads:[~2021-04-16 14:07 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-16 14:04 [PATCH v4 00/25] perf tool: AlderLake hybrid support series 1 Jin Yao
2021-04-16 14:04 ` [PATCH v4 01/25] tools headers uapi: Update tools's copy of linux/perf_event.h Jin Yao
2021-04-16 14:04 ` [PATCH v4 02/25] perf jevents: Support unit value "cpu_core" and "cpu_atom" Jin Yao
2021-04-16 14:04 ` [PATCH v4 03/25] perf pmu: Simplify arguments of __perf_pmu__new_alias Jin Yao
2021-04-16 14:04 ` [PATCH v4 04/25] perf pmu: Save pmu name Jin Yao
2021-04-16 14:04 ` [PATCH v4 05/25] perf pmu: Save detected hybrid pmus to a global pmu list Jin Yao
2021-04-16 14:04 ` [PATCH v4 06/25] perf pmu: Add hybrid helper functions Jin Yao
2021-04-16 14:04 ` [PATCH v4 07/25] perf stat: Uniquify hybrid event name Jin Yao
2021-04-16 14:05 ` [PATCH v4 08/25] perf parse-events: Create two hybrid hardware events Jin Yao
2021-04-16 14:05 ` [PATCH v4 09/25] perf parse-events: Create two hybrid cache events Jin Yao
2021-04-16 14:05 ` Jin Yao [this message]
2021-04-16 14:05 ` [PATCH v4 11/25] perf parse-events: Compare with hybrid pmu name Jin Yao
2021-04-16 14:05 ` [PATCH v4 12/25] perf parse-events: Support event inside hybrid pmu Jin Yao
2021-04-21 18:29 ` Jiri Olsa
2021-04-22 1:44 ` Jin, Yao
2021-04-16 14:05 ` [PATCH v4 13/25] perf record: Create two hybrid 'cycles' events by default Jin Yao
2021-04-16 14:05 ` [PATCH v4 14/25] perf stat: Add default hybrid events Jin Yao
2021-04-21 18:29 ` Jiri Olsa
2021-04-22 2:12 ` Jin, Yao
2021-04-22 10:25 ` Jiri Olsa
2021-04-16 14:05 ` [PATCH v4 15/25] perf stat: Filter out unmatched aggregation for hybrid event Jin Yao
2021-04-21 18:29 ` Jiri Olsa
2021-04-22 3:10 ` Jin, Yao
2021-04-22 10:26 ` Jiri Olsa
2021-04-16 14:05 ` [PATCH v4 16/25] perf stat: Warn group events from different hybrid PMU Jin Yao
2021-04-16 14:05 ` [PATCH v4 17/25] perf record: Uniquify hybrid event name Jin Yao
2021-04-16 14:05 ` [PATCH v4 18/25] perf tests: Add hybrid cases for 'Parse event definition strings' test Jin Yao
2021-04-16 14:05 ` [PATCH v4 19/25] perf tests: Add hybrid cases for 'Roundtrip evsel->name' test Jin Yao
2021-04-16 14:05 ` [PATCH v4 20/25] perf tests: Skip 'Setup struct perf_event_attr' test for hybrid Jin Yao
2021-04-21 18:29 ` Jiri Olsa
2021-04-22 3:11 ` Jin, Yao
2021-04-16 14:05 ` [PATCH v4 21/25] perf tests: Support 'Track with sched_switch' " Jin Yao
2021-04-21 18:28 ` Jiri Olsa
2021-04-22 3:14 ` Jin, Yao
2021-04-16 14:05 ` [PATCH v4 22/25] perf tests: Support 'Parse and process metrics' " Jin Yao
2021-04-21 18:29 ` Jiri Olsa
2021-04-22 3:20 ` Jin, Yao
2021-04-16 14:05 ` [PATCH v4 23/25] perf tests: Support 'Session topology' " Jin Yao
2021-04-21 18:29 ` Jiri Olsa
2021-04-22 3:15 ` Jin, Yao
2021-04-16 14:05 ` [PATCH v4 24/25] perf tests: Support 'Convert perf time to TSC' " Jin Yao
2021-04-21 18:29 ` Jiri Olsa
2021-04-22 3:16 ` Jin, Yao
2021-04-16 14:05 ` [PATCH v4 25/25] perf tests: Skip 'perf stat metrics (shadow stat) test' " Jin Yao
2021-04-21 1:14 ` [PATCH v4 00/25] perf tool: AlderLake hybrid support series 1 Jin, Yao
2021-04-21 10:03 ` Jiri Olsa
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=20210416140517.18206-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).