All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Andi Kleen <ak@linux.intel.com>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH] Update perf tools topdown documentation
Date: Wed, 11 Dec 2024 09:50:35 -0800	[thread overview]
Message-ID: <Z1nQ65jDU9YW8MFu@google.com> (raw)
In-Reply-To: <20241210193554.93013-1-ak@linux.intel.com>

Hello,

On Tue, Dec 10, 2024 at 11:35:54AM -0800, 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)

We can check with MAP_FAILED.

Thanks,
Namhyung

>  	.... 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
> +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
>  
> -- 
> 2.47.1
> 

      parent reply	other threads:[~2024-12-11 17:50 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
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 [this message]

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=Z1nQ65jDU9YW8MFu@google.com \
    --to=namhyung@kernel.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 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.