Namhyung Kim
64ea7a4620
perf annotate: Fix register usage in data type profiling
...
On data type profiling, it tried to match register name with a partial
string. For example, it allowed to match with "%rbp)" or "%rdi,8)".
But with recent change in the area, it doesn't match anymore and break
the data type profiling.
Let's pass the correct register name by removing the unwanted part.
Add arch__dwarf_regnum() to handle it in a single place.
Closes: 7d3n23li6drroxrdlpxn7ixehdeszkjdftah3zyngjl2qs22ef@yelcjv53v42o
Reported-by: Dmitry Dolgov <9erthalion6@gmail.com >
Reviewed-by: Ian Rogers <irogers@google.com >
Signed-off-by: Namhyung Kim <namhyung@kernel.org >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Ingo Molnar <mingo@kernel.org >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Zecheng Li <zli94@ncsu.edu >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-06 18:18:52 -03:00
Chun-Tse Shao
bb5a920b90
perf stat: Ensure metrics are displayed even with failed events
...
Currently, `perf stat` skips or hides metrics when the underlying
hardware events cannot be counted (e.g., due to insufficient permissions
or unsupported events).
In `--metric-only` mode, this often results in missing columns or blank
spaces, making the output difficult to parse.
Modify the logic to ensure metrics are consistently displayed by
propagating NAN (Not a Number) through the expression evaluator.
Specifically:
1. Update `prepare_metric()` in stat-shadow.c to treat uncounted events
(where `run == 0`) as NAN. This leverages the existing math in expr.y
to propagate NAN through metric expressions.
2. Remove the early return in the display logic's `printout()` function
that was previously skipping metrics in `--metric-only` mode for
failed events.
l
3. Simplify `perf_stat__skip_metric_event()` to no longer depend on
event runtime.
Tested:
1. `perf all metrics test` did not crash while paranoid is 2.
2. Multiple combinations with `CPUs_utilized` while paranoid is 2.
$ ./perf stat -M CPUs_utilized -a -- sleep 1
Performance counter stats for 'system wide':
<not supported> msec cpu-clock:u # nan CPUs CPUs_utilized
1,006,356,120 duration_time
1.004375550 seconds time elapsed
$ ./perf stat -M CPUs_utilized -a -j -- sleep 1
{"counter-value" : "<not supported>", "unit" : "msec", "event" : "cpu-clock:u", "event-runtime" : 0, "pcnt-running" : 100.00, "metric-value" : "nan", "metric-unit" : "CPUs CPUs_utilized"}
{"counter-value" : "1006642462.000000", "unit" : "", "event" : "duration_time", "event-runtime" : 1, "pcnt-running" : 100.00}
$ ./perf stat -M CPUs_utilized -a --metric-only -- sleep 1
Performance counter stats for 'system wide':
CPUs CPUs_utilized
nan
1.004424652 seconds time elapsed
$ ./perf stat -M CPUs_utilized -a --metric-only -j -- sleep 1
{"CPUs CPUs_utilized" : "none"}
Reviewed-by: Ian Rogers <irogers@google.com >
Signed-off-by: Chun-Tse Shao <ctshao@google.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: Kan Liang <kan.liang@linux.intel.com >
Cc: Mark Rutland <mark.rutland@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Yang Li <yang.lee@linux.alibaba.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-06 18:18:32 -03:00
Ian Rogers
446c595dc0
perf test addr2line_inlines: Ensure inline information shows on LBR leaves
...
Expand the addr2line inline function testing to also run for an LBR
callchain, skipping if LBR support isn't present.
Signed-off-by: Ian Rogers <irogers@google.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Dapeng Mi <dapeng1.mi@linux.intel.com >
Cc: Dmitriy Vyukov <dvyukov@google.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: Krzysztof Łopatowski <krzysztof.m.lopatowski@gmail.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Weilin Wang <weilin.wang@intel.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-06 18:11:31 -03:00
Ian Rogers
04f81f45b4
perf callchain lbr: Make the leaf IP that of the sample
...
The current IP of a leaf function when reported from a perf record with
"--call-graph lbr" is the "to" field of the LBR branch stack record.
The sample for the event being recorded may be further into the function
and there may be inlining information associated with it.
Rather than use the branch stack "to" field in this case switch to the
callchain appending the sample->ip and thereby allowing the inline
information to show.
Before this change:
```
$ perf record --call-graph lbr perf test -w inlineloop
...
$ perf script --fields +srcline
...
perf-inlineloop 467586 4649.344493: 950905 cpu_core/cycles/P:
55dfda2829c0 parent+0x0 (perf)
inlineloop.c:31
55dfda282a96 inlineloop+0x86 (perf)
inlineloop.c:47
55dfda236420 run_workload+0x59 (perf)
builtin-test.c:715
55dfda236b03 cmd_test+0x413 (perf)
builtin-test.c:825
...
```
After this change:
```
$ perf record --call-graph lbr perf test -w inlineloop
...
$ perf script --fields +srcline
...
perf-inlineloop 529703 11878.680815: 950905 cpu_core/cycles/P:
555ce86be9e6 leaf+0x26
inlineloop.c:20 (inlined)
555ce86be9e6 middle+0x26
inlineloop.c:27 (inlined)
555ce86be9e6 parent+0x26 (perf)
inlineloop.c:32
555ce86bea96 inlineloop+0x86 (perf)
inlineloop.c:47
555ce8672420 run_workload+0x59 (perf)
builtin-test.c:715
555ce8672b03 cmd_test+0x413 (perf)
builtin-test.c:825
...
```
Reviewed-by: Andi Kleen <ak@linux.intel.com >
Signed-off-by: Ian Rogers <irogers@google.com >
Acked-by: Dapeng Mi <dapeng1.mi@linux.intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Dmitriy Vyukov <dvyukov@google.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: Krzysztof Łopatowski <krzysztof.m.lopatowski@gmail.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Weilin Wang <weilin.wang@intel.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-06 18:10:44 -03:00
Leo Yan
a724a8fce5
perf kvm stat: Fix build error
...
Since commit ceea279f93 ("perf kvm stat: Remove use of the arch
directory"), a native build on Arm64 machine reports:
util/kvm-stat-arch/kvm-stat-x86.c:7:10: fatal error: asm/svm.h: No such file or directory
7 | #include <asm/svm.h>
| ^~~~~~~~~~~
compilation terminated.
The build fails to find x86's asm headers when building for Arm64. Fix
this by including asm headers with relative path instead.
Fixes: ceea279f93 ("perf kvm stat: Remove use of the arch directory")
Signed-off-by: Leo Yan <leo.yan@arm.com >
Link: https://lore.kernel.org/r/20260206-perf_fix_kvm_stat_error-v1-1-ad40115876be@arm.com
Cc: Ian Rogers <irogers@google.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Arnaldo Carvalho de Melo <acme@kernel.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: James Clark <james.clark@linaro.org >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: linux-kernel@vger.kernel.org
Cc: linux-perf-users@vger.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-06 18:07:05 -03:00
Dapeng Mi
e5e66adfe4
perf regs: Remove __weak attributive arch_sdt_arg_parse_op() function
...
In line with the previous patch, the __weak arch_sdt_arg_parse_op()
function is removed.
Architectural-specific implementations in the arch/ directory are now
converted into sub-functions within the util/perf-regs-arch/ directory.
The perf_sdt_arg_parse_op() function will call these sub-functions based
on the EM_HOST.
This change enables cross-architecture calls to arch_sdt_arg_parse_op().
No functional changes are intended.
Suggested-by: Ian Rogers <irogers@google.com >
Reviewed-by: Ian Rogers <irogers@google.com >
Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Alexandre Ghiti <alex@ghiti.fr >
Cc: Guo Ren <guoren@kernel.org >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Mike Leach <mike.leach@linaro.org >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <pjw@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Falcon <thomas.falcon@intel.com >
Cc: Will Deacon <will@kernel.org >
Cc: Xudong Hao <xudong.hao@intel.com >
Cc: Zide Chen <zide.chen@intel.com >
[ Fixed up somme fuzz with powerpc and x86 Build files wrt removing perf_regs.o ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-06 12:16:12 -03:00
Dapeng Mi
16dccbb842
perf regs: Remove __weak attributive arch__xxx_reg_mask() functions
...
Currently, some architecture-specific perf-regs functions, such as
arch__intr_reg_mask() and arch__user_reg_mask(), are defined with the
__weak attribute.
This approach ensures that only functions matching the architecture of
the build/run host are compiled and executed, reducing build time and
binary size.
However, this __weak attribute restricts these functions to be called
only on the same architecture, preventing cross-architecture
functionality.
For example, a perf.data file captured on x86 cannot be parsed on an ARM
platform.
To address this limitation, this patch removes the __weak attribute from
these perf-regs functions.
The architecture-specific code is moved from the arch/ directory to the
util/perf-regs-arch/ directory.
The appropriate architectural functions are then called based on the
EM_HOST.
No functional changes are intended.
Suggested-by: Ian Rogers <irogers@google.com >
Reviewed-by: Ian Rogers <irogers@google.com >
Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Alexandre Ghiti <alex@ghiti.fr >
Cc: Guo Ren <guoren@kernel.org >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Mike Leach <mike.leach@linaro.org >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <pjw@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Falcon <thomas.falcon@intel.com >
Cc: Will Deacon <will@kernel.org >
Cc: Xudong Hao <xudong.hao@intel.com >
Cc: Zide Chen <zide.chen@intel.com >
[ Fixed up somme fuzz with s390 and riscv Build files wrt removing perf_regs.o ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-06 12:16:09 -03:00
Dapeng Mi
e716e69cf6
perf arch: Update arch headers to use relative UAPI paths
...
The architectural specific headers perf_regs.h currently rely on the
host architecture's 'asm/perf_regs.h'.
This can lead to compilation inconsistencies or failures when including
and building perf for a target architecture that differs from the host's
architecture.
Explicitly point to the UAPI headers within the tools source tree using
relative paths.
This ensures that perf is always built against the intended
architecture.
No functional changes are intended.
Reviewed-by: Ian Rogers <irogers@google.com >
Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Alexandre Ghiti <alex@ghiti.fr >
Cc: Guo Ren <guoren@kernel.org >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Mike Leach <mike.leach@linaro.org >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <pjw@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Falcon <thomas.falcon@intel.com >
Cc: Will Deacon <will@kernel.org >
Cc: Xudong Hao <xudong.hao@intel.com >
Cc: Zide Chen <zide.chen@intel.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-06 12:15:48 -03:00
Dapeng Mi
c2e28ae294
perf regs: Fix abort for "-I" or "--user-regs" options
...
Fix an issue where the `perf` tool aborts unexpectedly when running the
following command:
```
perf record -e cycles -I -- true
Usage: perf record [<options>] [<command>]
or: perf record [<options>] -- <command> [<options>]
-I, --intr-regs[=<any register>]
sample selected machine registers on interrupt, use '-I?' to list register names
```
The usage of the `-I` or `--user-regs` options without specifying any
registers should default to sampling all general-purpose registers.
However, this currently causes an abnormal termination.
The issue was introduced by commit 3d06db9bad ("perf regs: Refactor
use of arch__sample_reg_masks() to perf_reg_name()").
This patch resolves the problem, ensuring that the `-I` or `--user-regs`
options work as intended without causing an abort.
Fixes: 3d06db9bad ("perf regs: Refactor use of arch__sample_reg_masks() to perf_reg_name()")
Reviewed-by: Ian Rogers <irogers@google.com >
Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Alexandre Ghiti <alex@ghiti.fr >
Cc: Guo Ren <guoren@kernel.org >
Cc: Ian Rogers <irogers@google.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-csky@vger.kernel.org
Cc: linux-riscv@lists.infradead.org
Cc: Mike Leach <mike.leach@linaro.org >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <pjw@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Falcon <thomas.falcon@intel.com >
Cc: Will Deacon <will@kernel.org >
Cc: Xudong Hao <xudong.hao@intel.com >
Cc: Zide Chen <zide.chen@intel.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-06 12:15:22 -03:00
Ian Rogers
cee275edcd
perf metricgroup: Don't early exit if no CPUID table exists
...
The failure to find a table of metrics with a CPUID shouldn't early
exit as the metric code will now also consider the default table.
When searching for a metric or metric group,
pmu_metrics_table__for_each_metric() considers all tables and so the
caller doesn't need to switch the table to do this.
Fixes: c7adeb0974 ("perf jevents: Add set of common metrics based on default ones")
Reviewed-by: Leo Yan <leo.yan@arm.com >
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Leo Yan <leo.yan@arm.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Ian Rogers <irogers@google.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-06 11:58:51 -03:00
Ian Rogers
f637bb2eed
perf tests: build-test coverage for NO_JEVENTS=1
...
Leo reported 'perf stat' being broken and this highlighted that the
'make NO_JEVENTS=1' variant is missing from 'make -C tools/perf
build-test', add it.
Closes: https://lore.kernel.org/linux-perf-users/20260205175250.GC3529712@e132581.arm.com/
Reported-by: Leo Yan <leo.yan@arm.com >
Reviewed-by: Leo Yan <leo.yan@arm.com >
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-06 11:56:54 -03:00
Ian Rogers
1d9622c3c1
perf tests: Additional 'perf stat' tests
...
Recently 'perf stat' regressed in per CPU mode [1].
Let's expand test coverage to catch the same breakage again as well as
to test the repeat, pid, detailed and no aggregation options.
[1] https://lore.kernel.org/linux-perf-users/cgja46br2smmznxs7kbeabs6zgv3b4olfqgh2fdp5mxk2yom4v@w6jjgov6hdi6/
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Andres Freund <andres@anarazel.de >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Richter <tmricht@linux.ibm.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-06 11:55:21 -03:00
Leo Yan
a108a6a4b9
perf record: Make logs more readable for event open failures
...
Since commit ee27476fa3 ("perf record: Skip don't fail for events
that don't open"), if a user does not have permission to access a PMU
event, perf reports:
perf record -e cs_etm// -C 3 -- ls
Error:
Failure to open event 'cs_etm//u' on PMU 'cs_etm' which will be removed.
No fallback found for 'cs_etm//u' for error 13
Error:
Failure to open event 'dummy:u' on PMU 'software' which will be removed.
No fallback found for 'dummy:u' for error 13
Error:
Failure to open any events for recording.
The log is not very helpful, as no clear indication of what "error 13"
means or how to address the issue.
This commit restores evsel__open_strerror() to generate a readable error
message and print it out:
perf record -e cs_etm// -C 3 -- ls
Error:
Failure to open event 'cs_etm//' on PMU 'cs_etm' which will be removed.
Access to performance monitoring and observability operations is limited.
Consider adjusting /proc/sys/kernel/perf_event_paranoid setting to open
access to performance monitoring and observability operations for processes
without CAP_PERFMON, CAP_SYS_PTRACE or CAP_SYS_ADMIN Linux capability.
More information can be found at 'Perf events and tool security' document:
https://www.kernel.org/doc/html/latest/admin-guide/perf-security.html
perf_event_paranoid setting is 1:
-1: Allow use of (almost) all events by all users
Ignore mlock limit after perf_event_mlock_kb without CAP_IPC_LOCK
>= 0: Disallow raw and ftrace function tracepoint access
>= 1: Disallow CPU event access
>= 2: Disallow kernel profiling
To make the adjusted perf_event_paranoid setting permanent preserve it
in /etc/sysctl.conf (e.g. kernel.perf_event_paranoid = <setting>)
Error:
Failure to open event 'dummy:u' on PMU 'software' which will be removed.
Access to performance monitoring and observability operations is limited.
Consider adjusting /proc/sys/kernel/perf_event_paranoid setting to open
access to performance monitoring and observability operations for processes
without CAP_PERFMON, CAP_SYS_PTRACE or CAP_SYS_ADMIN Linux capability.
More information can be found at 'Perf events and tool security' document:
https://www.kernel.org/doc/html/latest/admin-guide/perf-security.html
perf_event_paranoid setting is 1:
-1: Allow use of (almost) all events by all users
Ignore mlock limit after perf_event_mlock_kb without CAP_IPC_LOCK
>= 0: Disallow raw and ftrace function tracepoint access
>= 1: Disallow CPU event access
>= 2: Disallow kernel profiling
To make the adjusted perf_event_paranoid setting permanent preserve it
in /etc/sysctl.conf (e.g. kernel.perf_event_paranoid = <setting>)
Error:
Failure to open any events for recording.
Reviewed-by: Ian Rogers <irogers@google.com >
Signed-off-by: Leo Yan <leo.yan@arm.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: Namhyung Kim <namhyung@kernel.org >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-06 11:53:10 -03:00
Ian Rogers
84cb36da81
perf thread: Don't require machine to compute the e_machine
...
The machine can be calculated from a thread via its maps.
Don't require the machine argument to simplify callers and also to delay
computing the machine until a little later.
Signed-off-by: Ian Rogers <irogers@google.com >
Cc: Aditya Bodkhe <aditya.b1@linux.ibm.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Alexandre Ghiti <alex@ghiti.fr >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Andrew Jones <ajones@ventanamicro.com >
Cc: Anubhav Shelat <ashelat@redhat.com >
Cc: Anup Patel <anup@brainfault.org >
Cc: Athira Rajeev <atrajeev@linux.ibm.com >
Cc: Blake Jones <blakejones@google.com >
Cc: Chun-Tse Shao <ctshao@google.com >
Cc: Dapeng Mi <dapeng1.mi@linux.intel.com >
Cc: Dmitriy Vyukov <dvyukov@google.com >
Cc: Howard Chu <howardchu95@gmail.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@linux.dev >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <pjw@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Quan Zhou <zhouquan@iscas.ac.cn >
Cc: Shimin Guo <shimin.guo@skydio.com >
Cc: Swapnil Sapkal <swapnil.sapkal@amd.com >
Cc: Thomas Falcon <thomas.falcon@intel.com >
Cc: Will Deacon <will@kernel.org >
Cc: Yunseong Kim <ysk@kzalloc.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-03 18:01:27 -03:00
Ian Rogers
c4f4392264
perf header: Add e_machine/e_flags to the header
...
Add 64-bits of feature data to record the ELF machine and flags.
This allows readers to initialize based on the data.
For example, `perf kvm stat` wants to initialize based on the kind of
data to be read, but at initialization time there are no threads to base
this data upon and using the host means cross platform support won't
work.
The values in the perf_env also act as a cache for these within the
session.
Signed-off-by: Ian Rogers <irogers@google.com >
Cc: Aditya Bodkhe <aditya.b1@linux.ibm.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Alexandre Ghiti <alex@ghiti.fr >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Andrew Jones <ajones@ventanamicro.com >
Cc: Anubhav Shelat <ashelat@redhat.com >
Cc: Anup Patel <anup@brainfault.org >
Cc: Athira Rajeev <atrajeev@linux.ibm.com >
Cc: Blake Jones <blakejones@google.com >
Cc: Chun-Tse Shao <ctshao@google.com >
Cc: Dapeng Mi <dapeng1.mi@linux.intel.com >
Cc: Dmitriy Vyukov <dvyukov@google.com >
Cc: Howard Chu <howardchu95@gmail.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@linux.dev >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <pjw@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Quan Zhou <zhouquan@iscas.ac.cn >
Cc: Shimin Guo <shimin.guo@skydio.com >
Cc: Swapnil Sapkal <swapnil.sapkal@amd.com >
Cc: Thomas Falcon <thomas.falcon@intel.com >
Cc: Will Deacon <will@kernel.org >
Cc: Yunseong Kim <ysk@kzalloc.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-03 18:01:27 -03:00
Ian Rogers
07ad6f31b6
perf session: Add e_flags to the e_machine helper
...
Allow e_flags as well as e_machine to be computed using the e_machine
helper.
This isn't currently used, the argument is always NULL, but it will be
used for a new header feature.
Signed-off-by: Ian Rogers <irogers@google.com >
Cc: Aditya Bodkhe <aditya.b1@linux.ibm.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Alexandre Ghiti <alex@ghiti.fr >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Andrew Jones <ajones@ventanamicro.com >
Cc: Anubhav Shelat <ashelat@redhat.com >
Cc: Anup Patel <anup@brainfault.org >
Cc: Athira Rajeev <atrajeev@linux.ibm.com >
Cc: Blake Jones <blakejones@google.com >
Cc: Chun-Tse Shao <ctshao@google.com >
Cc: Dapeng Mi <dapeng1.mi@linux.intel.com >
Cc: Dmitriy Vyukov <dvyukov@google.com >
Cc: Howard Chu <howardchu95@gmail.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@linux.dev >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <pjw@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Quan Zhou <zhouquan@iscas.ac.cn >
Cc: Shimin Guo <shimin.guo@skydio.com >
Cc: Swapnil Sapkal <swapnil.sapkal@amd.com >
Cc: Thomas Falcon <thomas.falcon@intel.com >
Cc: Will Deacon <will@kernel.org >
Cc: Yunseong Kim <ysk@kzalloc.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-03 18:01:27 -03:00
Ian Rogers
43af548436
perf kvm: Wire up e_machine
...
Pass the e_machine to the kvm functions so that they aren't just wired
to EM_HOST.
In the case of a session move some setup until the session
is created.
As the session isn't fully running the default EM_HOST is returned as no
e_machine can be found in a running machine.
This is, however, some marginal progress to cross platform support.
Signed-off-by: Ian Rogers <irogers@google.com >
Cc: Aditya Bodkhe <aditya.b1@linux.ibm.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Alexandre Ghiti <alex@ghiti.fr >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Andrew Jones <ajones@ventanamicro.com >
Cc: Anubhav Shelat <ashelat@redhat.com >
Cc: Anup Patel <anup@brainfault.org >
Cc: Athira Rajeev <atrajeev@linux.ibm.com >
Cc: Blake Jones <blakejones@google.com >
Cc: Chun-Tse Shao <ctshao@google.com >
Cc: Dapeng Mi <dapeng1.mi@linux.intel.com >
Cc: Dmitriy Vyukov <dvyukov@google.com >
Cc: Howard Chu <howardchu95@gmail.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@linux.dev >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <pjw@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Quan Zhou <zhouquan@iscas.ac.cn >
Cc: Shimin Guo <shimin.guo@skydio.com >
Cc: Swapnil Sapkal <swapnil.sapkal@amd.com >
Cc: Thomas Falcon <thomas.falcon@intel.com >
Cc: Will Deacon <will@kernel.org >
Cc: Yunseong Kim <ysk@kzalloc.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-03 18:01:27 -03:00
Ian Rogers
ceea279f93
perf kvm stat: Remove use of the arch directory
...
`perf kvm stat` supports record and report options.
By using the arch directory a report for a different machine type cannot
be supported.
Move the kvm-stat code out of the arch directory and into
util/kvm-stat-arch following the pattern of perf-regs and dwarf-regs.
Avoid duplicate symbols by renaming functions to have the architecture
name within them.
For global variables, wrap them in an architecture specific function.
Selecting the architecture to use with `perf kvm stat` is selected by
EM_HOST, ie no different than before the change.
Later the ELF machine can be determined from the session or a header
feature (ie EM_HOST at the time of the record).
The build and #define HAVE_KVM_STAT_SUPPORT is now redundant so remove
across Makefiles and in the build.
Opportunistically constify architectural structs and arrays.
Signed-off-by: Ian Rogers <irogers@google.com >
Cc: Aditya Bodkhe <aditya.b1@linux.ibm.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Alexandre Ghiti <alex@ghiti.fr >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Andrew Jones <ajones@ventanamicro.com >
Cc: Anubhav Shelat <ashelat@redhat.com >
Cc: Anup Patel <anup@brainfault.org >
Cc: Athira Rajeev <atrajeev@linux.ibm.com >
Cc: Blake Jones <blakejones@google.com >
Cc: Chun-Tse Shao <ctshao@google.com >
Cc: Dapeng Mi <dapeng1.mi@linux.intel.com >
Cc: Dmitriy Vyukov <dvyukov@google.com >
Cc: Howard Chu <howardchu95@gmail.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@linux.dev >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <pjw@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Quan Zhou <zhouquan@iscas.ac.cn >
Cc: Shimin Guo <shimin.guo@skydio.com >
Cc: Swapnil Sapkal <swapnil.sapkal@amd.com >
Cc: Thomas Falcon <thomas.falcon@intel.com >
Cc: Will Deacon <will@kernel.org >
Cc: Yunseong Kim <ysk@kzalloc.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-03 18:01:27 -03:00
Ian Rogers
8c5b40678c
libperf build: Always place libperf includes first
...
When building tools/perf the CFLAGS can contain a directory for the
installed headers.
As the headers may be being installed while building libperf.a this can
cause headers to be partially installed and found in the include path
while building an object file for libperf.a.
The installed header may reference other installed headers that are
missing given the partial nature of the install and then the build fails
with a missing header file.
Avoid this by ensuring the libperf source headers are always first in
the CFLAGS.
Fixes: 3143504918 ("libperf: Make libperf.a part of the perf build")
Signed-off-by: Ian Rogers <irogers@google.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-03 18:01:27 -03:00
Ian Rogers
d2ac7e4418
perf test kvm: Add stat live testing
...
Ensure the `perf kvm stat live -p ..` has some basic functionality.
Signed-off-by: Ian Rogers <irogers@google.com >
Cc: Aditya Bodkhe <aditya.b1@linux.ibm.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Albert Ou <aou@eecs.berkeley.edu >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Alexandre Ghiti <alex@ghiti.fr >
Cc: Andi Kleen <ak@linux.intel.com >
Cc: Andrew Jones <ajones@ventanamicro.com >
Cc: Anubhav Shelat <ashelat@redhat.com >
Cc: Anup Patel <anup@brainfault.org >
Cc: Athira Rajeev <atrajeev@linux.ibm.com >
Cc: Blake Jones <blakejones@google.com >
Cc: Chun-Tse Shao <ctshao@google.com >
Cc: Dapeng Mi <dapeng1.mi@linux.intel.com >
Cc: Dmitriy Vyukov <dvyukov@google.com >
Cc: Howard Chu <howardchu95@gmail.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Kan Liang <kan.liang@linux.intel.com >
Cc: Leo Yan <leo.yan@linux.dev >
Cc: Mike Leach <mike.leach@linaro.org >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Palmer Dabbelt <palmer@dabbelt.com >
Cc: Paul Walmsley <pjw@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Quan Zhou <zhouquan@iscas.ac.cn >
Cc: Shimin Guo <shimin.guo@skydio.com >
Cc: Swapnil Sapkal <swapnil.sapkal@amd.com >
Cc: Thomas Falcon <thomas.falcon@intel.com >
Cc: Will Deacon <will@kernel.org >
Cc: Yunseong Kim <ysk@kzalloc.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-03 18:01:27 -03:00
Ian Rogers
b5c9bcde61
perf capstone: Support for dlopen-ing libcapstone.so
...
If perf is built with LIBCAPSTONE_DLOPEN=1, support dlopen-ing
libcapstone.so and then calling the necessary functions by looking them
up using dlsym.
The types come from capstone.h which means the libcapstone feature check
needs to pass, and NO_CAPSTONE=1 hasn't been defined. This will cause
the definition of HAVE_LIBCAPSTONE_SUPPORT.
Earlier versions of this code tried to declare the necessary
capstone.h constants and structs, but they weren't stable and caused
breakages across libcapstone releases.
Signed-off-by: Ian Rogers <irogers@google.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Bill Wendling <morbo@google.com >
Cc: Charlie Jenkins <charlie@rivosinc.com >
Cc: Collin Funk <collin.funk1@gmail.com >
Cc: Dmitriy Vyukov <dvyukov@google.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: Justin Stitt <justinstitt@google.com >
Cc: Masami Hiramatsu <mhiramat@kernel.org >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Nathan Chancellor <nathan@kernel.org >
Cc: Nick Desaulniers <nick.desaulniers+lkml@gmail.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-03 11:34:02 -03:00
Ian Rogers
169343cc8f
perf build: Remove NO_LIBCAP that controls nothing
...
Using libcap was removed in commit e25ebda78e ("perf cap: Tidy up
and improve capability testing") and improve capability testing"),
however, some build documentation and a use of the NO_LIBCAP=1 were
lingering.
Remove these left over bits.
Fixes: e25ebda78e ("perf cap: Tidy up and improve capability testing")
Signed-off-by: Ian Rogers <irogers@google.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Ian Rogers <irogers@google.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-02-03 11:32:16 -03:00
Ian Rogers
e205952db7
perf jevents: Validate that all names given an Event
...
Validate they exist in a JSON file from one directory found from one
directory above the model's JSON directory.
This avoids broken fallback encodings being created.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:46 -03:00
Ian Rogers
82e53e7ae0
perf jevents: Add cycles breakdown metric for arm64/AMD/Intel
...
Breakdown cycles to user, kernel and guest. Add a common_metrics.py
file for such metrics.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:46 -03:00
Ian Rogers
e74f72a7e2
perf jevents: Add mesh bandwidth saturation metric for Intel
...
Memory bandwidth saturation from CBOX/CHA events present in
broadwellde, broadwellx, cascadelakex, haswellx, icelakex, skylakex
and snowridgex.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:46 -03:00
Ian Rogers
5dc81578ad
perf jevents: Add upi_bw metric for Intel
...
Break down UPI read and write bandwidth using uncore_upi counters.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:46 -03:00
Ian Rogers
6ec3058e70
perf jevents: Add local/remote miss latency metrics for Intel
...
Derive from CBOX/CHA occupancy and inserts the average latency as is
provided in Intel's uncore performance monitoring reference.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:46 -03:00
Ian Rogers
1fee2701a7
perf jevents: Add C-State metrics from the PCU PMU for Intel
...
Use occupancy events fixed in:
https://lore.kernel.org/lkml/20240226201517.3540187-1-irogers@google.com/
Metrics are at the socket level referring to cores, not hyperthreads.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:46 -03:00
Ian Rogers
2166b44be9
perf jevents: Add dir breakdown metrics for Intel
...
Breakdown directory hit, misses and requests. The implementation uses
the M2M and CHA PMUs present in server models broadwellde, broadwellx
cascadelakex, emeraldrapids, icelakex, sapphirerapids and skylakex.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:46 -03:00
Ian Rogers
cde9c1a5d9
perf jevents: Add local/remote "mem" breakdown metrics for Intel
...
Breakdown local and remote memory bandwidth, read and writes.
The implementation uses the HA and CHA PMUs present in server models
broadwellde, broadwellx cascadelakex, emeraldrapids, haswellx, icelakex,
ivytown, sapphirerapids and skylakex.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:46 -03:00
Ian Rogers
130f4245af
perf jevents: Add mem_bw metric for Intel
...
Break down memory bandwidth using uncore counters. For many models
this matches the memory_bandwidth_* metrics, but these metrics aren't
made available on all models.
Add support for free running counters. Query the event JSON when
determining which what events/counters are available.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:46 -03:00
Ian Rogers
426b844289
perf jevents: Add Miss Level Parallelism (MLP) metric for Intel
...
Number of outstanding load misses per cycle.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:46 -03:00
Ian Rogers
d666f0172a
perf jevents: Add FPU metrics for Intel
...
Metrics break down of floating point operations.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:46 -03:00
Ian Rogers
2f3d6ea05d
perf jevents: Add context switch metrics for Intel
...
Metrics break down context switches for different kinds of
instruction.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00
Ian Rogers
59341f4e17
perf jevents: Add ILP metrics for Intel
...
Use the counter mask (cmask) to see how many cycles an instruction
takes to retire. Present as a set of ILP metrics.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00
Ian Rogers
d80edef231
perf jevents: Add load store breakdown metrics ldst for Intel
...
Give breakdown of number of instructions. Use the counter mask (cmask)
to show the number of cycles taken to retire the instructions.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00
Ian Rogers
7413633e25
perf jevents: Add L2 metrics for Intel
...
Give a breakdown of various L2 counters as metrics, including totals,
reads, hardware prefetcher, RFO, code and evictions.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00
Ian Rogers
cd1c6a4874
perf jevents: Add ports metric group giving utilization on Intel
...
The ports metric group contains a metric for each port giving its
utilization as a ratio of cycles.
The metrics are created by looking for UOPS_DISPATCHED.PORT events.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00
Ian Rogers
397fdb3a24
perf jevents: Add software prefetch (swpf) metric group for Intel
...
Add metrics that breakdown software prefetch instruction use.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00
Ian Rogers
37d0b00a1a
perf jevents: Add br metric group for branch statistics on Intel
...
The br metric group for branches itself comprises metric groups for
total, taken, conditional, fused and far metric groups using JSON
events.
Conditional taken and not taken metrics are specific to Icelake and
later generations, so the presence of the event is used to determine
whether the metric should exist.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00
Ian Rogers
8c345f3500
perf jevents: Add tsx metric group for Intel models
...
Allow duplicated metric to be dropped from JSON files. Detect when TSX
is supported by a model by using the JSON events, use sysfs events at
runtime as hypervisors, etc. may disable TSX.
Add CheckPmu to metric to determine if which PMUs have been associated
with the loaded events.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00
Ian Rogers
7eb9fa417c
perf jevents: Mark metrics with experimental events as experimental
...
When metrics are made with experimental events it is desirable the
metric description also carries this information in case of metric
inaccuracies.
Suggested-by: Perry Taylor <perry.taylor@intel.com >
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00
Ian Rogers
17d616b7d9
perf jevents: Add smi metric group for Intel models
...
Allow duplicated metric to be dropped from JSON files.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00
Ian Rogers
61b7b2ef64
perf jevents: Add CheckPmu to see if a PMU is in loaded JSON events
...
CheckPmu can be used to determine if hybrid events are present,
allowing for hybrid conditional metrics/events/pmus to be premised on
the JSON files rather than hard coded tables.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00
Ian Rogers
1d519e5aa8
perf jevents: Add idle metric for Intel models
...
Compute using the msr PMU the percentage of wallclock cycles where the
CPUs are in a low power state.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00
Ian Rogers
bab90b3b46
perf jevents: Add RAPL metrics for all Intel models
...
Add a 'cpu_power' metric group that computes the power consumption
from RAPL events if they are present.
Signed-off-by: Ian Rogers <irogers@google.com >
Tested-by: Thomas Falcon <thomas.falcon@intel.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Sandipan Das <sandipan.das@amd.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00
Ian Rogers
3563030d4f
perf jevents: Add context switch metrics for AMD
...
Metrics break down context switches for different kinds of
instruction.
Reviewed-by: Sandipan Das <sandipan.das@amd.com >
Signed-off-by: Ian Rogers <irogers@google.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Falcon <thomas.falcon@intel.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00
Ian Rogers
fb4c058174
perf jevents: Add load store breakdown metrics ldst for AMD
...
Give breakdown of number of instructions. Use the counter mask (cmask)
to show the number of cycles taken to retire the instructions.
Reviewed-by: Sandipan Das <sandipan.das@amd.com >
Signed-off-by: Ian Rogers <irogers@google.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Falcon <thomas.falcon@intel.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00
Ian Rogers
5ecb1622d0
perf jevents: Add uncore l3 metric group for AMD
...
Metrics use the amd_l3 PMU for access/miss/hit information.
Reviewed-by: Sandipan Das <sandipan.das@amd.com >
Signed-off-by: Ian Rogers <irogers@google.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Falcon <thomas.falcon@intel.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00
Ian Rogers
c4108b9509
perf jevents: Add dtlb metric group for AMD
...
Add metrics that give an overview and details of the dtlb (zen1, zen2,
zen3).
Reviewed-by: Sandipan Das <sandipan.das@amd.com >
Signed-off-by: Ian Rogers <irogers@google.com >
Cc: Adrian Hunter <adrian.hunter@intel.com >
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com >
Cc: Benjamin Gray <bgray@linux.ibm.com >
Cc: Caleb Biggers <caleb.biggers@intel.com >
Cc: Edward Baker <edward.baker@intel.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: James Clark <james.clark@linaro.org >
Cc: Jing Zhang <renyu.zj@linux.alibaba.com >
Cc: Jiri Olsa <jolsa@kernel.org >
Cc: John Garry <john.g.garry@oracle.com >
Cc: Leo Yan <leo.yan@arm.com >
Cc: Namhyung Kim <namhyung@kernel.org >
Cc: Perry Taylor <perry.taylor@intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Falcon <thomas.falcon@intel.com >
Cc: Weilin Wang <weilin.wang@intel.com >
Cc: Xu Yang <xu.yang_2@nxp.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2026-01-28 15:18:45 -03:00