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 14/25] perf stat: Add default hybrid events
Date: Fri, 16 Apr 2021 22:05:06 +0800 [thread overview]
Message-ID: <20210416140517.18206-15-yao.jin@linux.intel.com> (raw)
In-Reply-To: <20210416140517.18206-1-yao.jin@linux.intel.com>
Previously if '-e' is not specified in perf stat, some software events
and hardware events are added to evlist by default.
Before:
# ./perf stat -a -- sleep 1
Performance counter stats for 'system wide':
24,044.40 msec cpu-clock # 23.946 CPUs utilized
99 context-switches # 4.117 /sec
24 cpu-migrations # 0.998 /sec
3 page-faults # 0.125 /sec
7,000,244 cycles # 0.000 GHz
2,955,024 instructions # 0.42 insn per cycle
608,941 branches # 25.326 K/sec
31,991 branch-misses # 5.25% of all branches
1.004106859 seconds time elapsed
Among the events, cycles, instructions, branches and branch-misses
are hardware events.
One hybrid platform, two hardware events are created for one
hardware event.
cpu_core/cycles/,
cpu_atom/cycles/,
cpu_core/instructions/,
cpu_atom/instructions/,
cpu_core/branches/,
cpu_atom/branches/,
cpu_core/branch-misses/,
cpu_atom/branch-misses/
These events would be added to evlist on hybrid platform.
Since parse_events() has been supported to create two hardware events
for one event on hybrid platform, so we just use parse_events(evlist,
"cycles,instructions,branches,branch-misses") to create the default
events and add them to evlist.
After:
# ./perf stat -a -- sleep 1
Performance counter stats for 'system wide':
24,048.60 msec task-clock # 23.947 CPUs utilized
438 context-switches # 18.213 /sec
24 cpu-migrations # 0.998 /sec
6 page-faults # 0.249 /sec
24,813,157 cpu_core/cycles/ # 1.032 M/sec
8,072,687 cpu_atom/cycles/ # 335.682 K/sec
20,731,286 cpu_core/instructions/ # 862.058 K/sec
3,737,203 cpu_atom/instructions/ # 155.402 K/sec
2,620,924 cpu_core/branches/ # 108.984 K/sec
381,186 cpu_atom/branches/ # 15.851 K/sec
93,248 cpu_core/branch-misses/ # 3.877 K/sec
36,515 cpu_atom/branch-misses/ # 1.518 K/sec
1.004235472 seconds time elapsed
We can see two events are created for one hardware event.
One TODO is, the shadow stats looks a bit different, now it's just
'M/sec'.
The perf_stat__update_shadow_stats and perf_stat__print_shadow_stats
need to be improved in future if we want to get the original shadow
stats.
Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
---
v4:
- No change.
tools/perf/builtin-stat.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 1255af4751c2..0351b99d17a7 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -1145,6 +1145,13 @@ static int parse_stat_cgroups(const struct option *opt,
return parse_cgroups(opt, str, unset);
}
+static int add_default_hybrid_events(struct evlist *evlist)
+{
+ struct parse_events_error err;
+
+ return parse_events(evlist, "cycles,instructions,branches,branch-misses", &err);
+}
+
static struct option stat_options[] = {
OPT_BOOLEAN('T', "transaction", &transaction_run,
"hardware transaction statistics"),
@@ -1626,6 +1633,12 @@ static int add_default_attributes(void)
{ .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_BRANCH_INSTRUCTIONS },
{ .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_BRANCH_MISSES },
+};
+ struct perf_event_attr default_sw_attrs[] = {
+ { .type = PERF_TYPE_SOFTWARE, .config = PERF_COUNT_SW_TASK_CLOCK },
+ { .type = PERF_TYPE_SOFTWARE, .config = PERF_COUNT_SW_CONTEXT_SWITCHES },
+ { .type = PERF_TYPE_SOFTWARE, .config = PERF_COUNT_SW_CPU_MIGRATIONS },
+ { .type = PERF_TYPE_SOFTWARE, .config = PERF_COUNT_SW_PAGE_FAULTS },
};
/*
@@ -1863,6 +1876,14 @@ static int add_default_attributes(void)
}
if (!evsel_list->core.nr_entries) {
+ if (perf_pmu__has_hybrid()) {
+ if (evlist__add_default_attrs(evsel_list,
+ default_sw_attrs) < 0) {
+ return -1;
+ }
+ return add_default_hybrid_events(evsel_list);
+ }
+
if (target__has_cpu(&target))
default_attrs0[0].config = PERF_COUNT_SW_CPU_CLOCK;
--
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 ` [PATCH v4 10/25] perf parse-events: Create two hybrid raw events Jin Yao
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 ` Jin Yao [this message]
2021-04-21 18:29 ` [PATCH v4 14/25] perf stat: Add default hybrid events 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-15-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.