From: Leo Yan <leo.yan@arm.com>
To: Ian Rogers <irogers@google.com>
Cc: Atish Patra <atishp@rivosinc.com>,
linux-riscv@lists.infradead.org, beeman@rivosinc.com,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Mark Rutland <mark.rutland@arm.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>,
James Clark <james.clark@linaro.org>,
Ze Gao <zegao2021@gmail.com>, Weilin Wang <weilin.wang@intel.com>,
Ben Gainey <ben.gainey@arm.com>,
Dominique Martinet <asmadeus@codewreck.org>,
Junhao He <hejunhao3@huawei.com>,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v1 3/4] perf record: Skip don't fail for events that don't open
Date: Tue, 12 Nov 2024 19:53:43 +0000 [thread overview]
Message-ID: <20241112195343.GA404636@e132581.arm.com> (raw)
In-Reply-To: <20241026121758.143259-4-irogers@google.com>
On Sat, Oct 26, 2024 at 05:17:57AM -0700, Ian Rogers wrote:
>
> Whilst for many tools it is an expected behavior that failure to open
> a perf event is a failure, ARM decided to name PMU events the same as
> legacy events and then failed to rename such events on a server uncore
> SLC PMU. As perf's default behavior when no PMU is specified is to
> open the event on all PMUs that advertise/"have" the event, this
> yielded failures when trying to make the priority of legacy and
> sysfs/json events uniform - something requested by RISC-V and ARM. A
> legacy event user on ARM hardware may find their event opened on an
> uncore PMU which for perf record will fail. Arnaldo suggested skipping
> such events which this patch implements. Rather than have the skipping
> conditional on running on ARM, the skipping is done on all
> architectures as such a fundamental behavioral difference could lead
> to problems with tools built/depending on perf.
>
> An example of perf record failing to open events on x86 is:
> ```
> $ perf record -e data_read,cycles,LLC-prefetch-read -a sleep 0.1
> Error:
> Failure to open event 'data_read' on PMU 'uncore_imc_free_running_0' which will be removed.
> The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (data_read).
> "dmesg | grep -i perf" may provide additional information.
>
> Error:
> Failure to open event 'data_read' on PMU 'uncore_imc_free_running_1' which will be removed.
> The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (data_read).
> "dmesg | grep -i perf" may provide additional information.
>
> Error:
> Failure to open event 'LLC-prefetch-read' on PMU 'cpu' which will be removed.
> The LLC-prefetch-read event is not supported.
> [ perf record: Woken up 1 times to write data ]
> [ perf record: Captured and wrote 2.188 MB perf.data (87 samples) ]
>
> $ perf report --stats
> Aggregated stats:
> TOTAL events: 17255
> MMAP events: 284 ( 1.6%)
> COMM events: 1961 (11.4%)
> EXIT events: 1 ( 0.0%)
> FORK events: 1960 (11.4%)
> SAMPLE events: 87 ( 0.5%)
> MMAP2 events: 12836 (74.4%)
> KSYMBOL events: 83 ( 0.5%)
> BPF_EVENT events: 36 ( 0.2%)
> FINISHED_ROUND events: 2 ( 0.0%)
> ID_INDEX events: 1 ( 0.0%)
> THREAD_MAP events: 1 ( 0.0%)
> CPU_MAP events: 1 ( 0.0%)
> TIME_CONV events: 1 ( 0.0%)
> FINISHED_INIT events: 1 ( 0.0%)
> cycles stats:
> SAMPLE events: 87
> ```
Thanks for James reminding me. Tested on AVA platform:
# tree /sys/bus/event_source/devices/arm_dsu_*/events
...
/sys/bus/event_source/devices/arm_dsu_9/events
├── bus_access
├── bus_cycles
├── cycles
├── l3d_cache
├── l3d_cache_allocate
├── l3d_cache_refill
├── l3d_cache_wb
└── memory_error
# ./perf record -- sleep 0.1
Error:
Failure to open event 'cycles:PH' on PMU 'arm_dsu_0' which will be
removed.
cycles:PH: PMU Hardware doesn't support sampling/overflow-interrupts.
Try 'perf stat'
Error:
Failure to open event 'cycles:PH' on PMU 'arm_dsu_1' which will be
removed.
cycles:PH: PMU Hardware doesn't support sampling/overflow-interrupts.
Try 'perf stat'
...
Error:
Failure to open event 'cycles:PH' on PMU 'arm_dsu_15' which will be
removed.
cycles:PH: PMU Hardware doesn't support sampling/overflow-interrupts.
Try 'perf stat'
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.008 MB perf.data (8 samples) ]
# ./perf report --stats
Aggregated stats:
TOTAL events: 67
MMAP events: 40 (59.7%)
COMM events: 1 ( 1.5%)
SAMPLE events: 8 (11.9%)
KSYMBOL events: 6 ( 9.0%)
BPF_EVENT events: 6 ( 9.0%)
FINISHED_ROUND events: 1 ( 1.5%)
ID_INDEX events: 1 ( 1.5%)
THREAD_MAP events: 1 ( 1.5%)
CPU_MAP events: 1 ( 1.5%)
TIME_CONV events: 1 ( 1.5%)
FINISHED_INIT events: 1 ( 1.5%)
cycles:P stats:
SAMPLE events: 8
# ./perf stat -- sleep 0.1
Performance counter stats for 'sleep 0.1':
0.87 msec task-clock # 0.009 CPUs utilized
1 context-switches # 1.148 K/sec
0 cpu-migrations # 0.000 /sec
52 page-faults # 59.685 K/sec
877,835 instructions # 1.14 insn per cycle
# 0.25 stalled cycles per insn
772,102 cycles # 886.210 M/sec
191,914 stalled-cycles-frontend # 24.86% frontend cycles idle
219,183 stalled-cycles-backend # 28.39% backend cycles idle
184,099 branches # 211.307 M/sec
8,548 branch-misses # 4.64% of all branches
0.101623529 seconds time elapsed
0.001645000 seconds user
0.000000000 seconds sys
Tested-by: Leo Yan <leo.yan@arm.com>
next prev parent reply other threads:[~2024-11-12 19:53 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-26 12:17 [PATCH v1 0/4] Prefer sysfs/JSON events also when no PMU is provided Ian Rogers
2024-10-26 12:17 ` [PATCH v1 1/4] perf evsel: Add pmu_name helper Ian Rogers
2024-10-26 12:17 ` [PATCH v1 2/4] perf stat: Fix find_stat for mixed legacy/non-legacy events Ian Rogers
2024-10-26 12:17 ` [PATCH v1 3/4] perf record: Skip don't fail for events that don't open Ian Rogers
2024-11-11 15:49 ` James Clark
2024-11-11 17:00 ` Ian Rogers
2024-11-12 14:12 ` James Clark
2024-11-12 16:25 ` Ian Rogers
2024-11-12 19:53 ` Leo Yan [this message]
2024-11-12 22:24 ` Ian Rogers
2024-11-13 10:00 ` James Clark
2024-10-26 12:17 ` [PATCH v1 4/4] perf parse-events: Reapply "Prefer sysfs/JSON hardware events over legacy" Ian Rogers
2024-11-07 18:51 ` [PATCH v1 0/4] Prefer sysfs/JSON events also when no PMU is provided Ian Rogers
2024-11-08 12:16 ` James Clark
2024-11-08 18:37 ` Atish Kumar Patra
2024-11-08 18:59 ` Ian Rogers
2024-11-08 22:06 ` Atish Kumar Patra
2024-11-11 10:45 ` James Clark
2024-11-11 17:19 ` Ian Rogers
2024-11-11 23:38 ` Atish Kumar Patra
2024-11-12 14:21 ` James Clark
2024-11-12 17:23 ` Ian Rogers
2024-11-12 19:55 ` Atish Kumar Patra
2024-11-11 23:23 ` Atish Kumar Patra
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=20241112195343.GA404636@e132581.arm.com \
--to=leo.yan@arm.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=asmadeus@codewreck.org \
--cc=atishp@rivosinc.com \
--cc=beeman@rivosinc.com \
--cc=ben.gainey@arm.com \
--cc=hejunhao3@huawei.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=weilin.wang@intel.com \
--cc=zegao2021@gmail.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).