From: James Clark <james.clark@linaro.org>
To: Andi Kleen <ak@linux.intel.com>, linux-perf-users@vger.kernel.org
Subject: Re: [PATCH] Update perf tools topdown documentation
Date: Wed, 11 Dec 2024 10:13:43 +0000 [thread overview]
Message-ID: <01513f7b-390c-4e2e-a6e8-54c268e8acf2@linaro.org> (raw)
In-Reply-To: <20241210193554.93013-1-ak@linux.intel.com>
On 10/12/2024 7:35 pm, Andi Kleen wrote:
> - Document and give examples for the Lunar Lake perf metrics reset mode.
> - Fix the error handling for mmap (it returns -1 on error, not 0)
> - Clarify the slots placement documentation. It is not Icelake specific
> and also applies for non sampling.
>
> Signed-off-by: Andi Kleen <ak@linux.intel.com>
> ---
> tools/perf/Documentation/topdown.txt | 33 +++++++++++++++++++++++-----
> 1 file changed, 28 insertions(+), 5 deletions(-)
>
> diff --git a/tools/perf/Documentation/topdown.txt b/tools/perf/Documentation/topdown.txt
> index 5c17fff694ee..3e2340f3f78e 100644
> --- a/tools/perf/Documentation/topdown.txt
> +++ b/tools/perf/Documentation/topdown.txt
> @@ -87,7 +87,7 @@ if (slots_fd < 0)
>
> /* Memory mapping the fd permits _rdpmc calls from userspace */
> void *slots_p = mmap(0, getpagesize(), PROT_READ, MAP_SHARED, slots_fd, 0);
> -if (!slot_p)
> +if (slot_p == (void*)-1L)
> .... error ...
>
> /*
> @@ -107,7 +107,7 @@ if (metrics_fd < 0)
>
> /* Memory mapping the fd permits _rdpmc calls from userspace */
> void *metrics_p = mmap(0, getpagesize(), PROT_READ, MAP_SHARED, metrics_fd, 0);
> -if (!metrics_p)
> +if (metrics_p == (void*)-1L)
> ... error ...
>
> Note: the file descriptors returned by the perf_event_open calls must be memory
> @@ -290,15 +290,38 @@ This "opens" a new measurement period.
> A program using RDPMC for TopDown should schedule such a reset
> regularly, as in every few seconds.
>
> -Limits on Intel Ice Lake
> -========================
> +Newer Intel CPUs (Lunar Lake, Arrow Lake+) support resetting the perf
> +metrics automatically RDPMC, which can avoid a system call or needing
Minor nit: "automatically using RDPMC"?
Reviewed-by: James Clark <james.clark@linaro.org>
> +to schedule special resets.
> +
> +This is available if /sys/devices/cpu*/cap/metrics_clear
> +exists, and requires setting an opt-in bit when opening the
> +slots counter:
> +
> +if (access("/sys/devices/cpu/cap/metrics_clear") &&
> + access("/sys/devices/cpu_core/cap/metrics_clear"))
> + ... functionality not supported ...
> +
> +#define INTEL_TD_CFG_METRIC_CLEAR 1ULL
> +
> +struct perf_event_attr slots_event = {
> + ... same as slots example above ...
> + .config1 = INTEL_TD_CFG_METRIC_CLEAR,
> +};
> +
> +... open and map counter same as example above ...
> +
> +Then any metric read will reset the metrics and slots.
> +
> +Using perf metrics with perf stat
> +=================================
>
> Four pseudo TopDown metric events are exposed for the end-users,
> topdown-retiring, topdown-bad-spec, topdown-fe-bound and topdown-be-bound.
> They can be used to collect the TopDown value under the following
> rules:
> - All the TopDown metric events must be in a group with the SLOTS event.
> -- The SLOTS event must be the leader of the group.
> +- The SLOTS event must be the first entry of the group.
> - The PERF_FORMAT_GROUP flag must be applied for each TopDown metric
> events
>
next prev parent reply other threads:[~2024-12-11 10:13 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-10 19:35 [PATCH] Update perf tools topdown documentation Andi Kleen
2024-12-11 10:13 ` James Clark [this message]
2024-12-11 15:49 ` Liang, Kan
2024-12-11 16:06 ` Liang, Kan
2024-12-11 18:20 ` Ian Rogers
2024-12-11 20:47 ` Liang, Kan
2024-12-11 15:28 ` Liang, Kan
2024-12-11 17:50 ` Namhyung Kim
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=01513f7b-390c-4e2e-a6e8-54c268e8acf2@linaro.org \
--to=james.clark@linaro.org \
--cc=ak@linux.intel.com \
--cc=linux-perf-users@vger.kernel.org \
/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).