* [PATCH] Update perf tools topdown documentation
@ 2024-12-10 19:35 Andi Kleen
2024-12-11 10:13 ` James Clark
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Andi Kleen @ 2024-12-10 19:35 UTC (permalink / raw)
To: linux-perf-users; +Cc: Andi Kleen
- 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
+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
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] Update perf tools topdown documentation
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 15:28 ` Liang, Kan
2024-12-11 17:50 ` Namhyung Kim
2 siblings, 1 reply; 8+ messages in thread
From: James Clark @ 2024-12-11 10:13 UTC (permalink / raw)
To: Andi Kleen, linux-perf-users
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
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Update perf tools topdown documentation
2024-12-10 19:35 [PATCH] Update perf tools topdown documentation Andi Kleen
2024-12-11 10:13 ` James Clark
@ 2024-12-11 15:28 ` Liang, Kan
2024-12-11 17:50 ` Namhyung Kim
2 siblings, 0 replies; 8+ messages in thread
From: Liang, Kan @ 2024-12-11 15:28 UTC (permalink / raw)
To: Andi Kleen, linux-perf-users
On 2024-12-10 2:35 p.m., 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
> +to schedule special resets.
> +
> +This is available if /sys/devices/cpu*/cap/metrics_clear
It's under the "format/metrics_clear", not "cap/metrics_clear"
https://lore.kernel.org/lkml/20240926184558.3797290-1-kan.liang@linux.intel.com/
Since the kernel patch hasn't been merged yet, I will add this document
patch to the kernel patch series. I will re-post the whole series soon.
Thanks,
Kan
> +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
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Update perf tools topdown documentation
2024-12-11 10:13 ` James Clark
@ 2024-12-11 15:49 ` Liang, Kan
2024-12-11 16:06 ` Liang, Kan
0 siblings, 1 reply; 8+ messages in thread
From: Liang, Kan @ 2024-12-11 15:49 UTC (permalink / raw)
To: James Clark, Andi Kleen, linux-perf-users
On 2024-12-11 5:13 a.m., James Clark wrote:
>
>
> 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"?
The RDPMC can automatically reset the perf metrics.
Maybe change it to "automatically resetting the perf metrics RDPMC"
Thanks,
Kan
>
> 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
>>
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Update perf tools topdown documentation
2024-12-11 15:49 ` Liang, Kan
@ 2024-12-11 16:06 ` Liang, Kan
2024-12-11 18:20 ` Ian Rogers
0 siblings, 1 reply; 8+ messages in thread
From: Liang, Kan @ 2024-12-11 16:06 UTC (permalink / raw)
To: James Clark, Andi Kleen, linux-perf-users
On 2024-12-11 10:49 a.m., Liang, Kan wrote:
>
>
> On 2024-12-11 5:13 a.m., James Clark wrote:
>>
>>
>> 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"?
>
> The RDPMC can automatically reset the perf metrics.
> Maybe change it to "automatically resetting the perf metrics RDPMC"
>
The new post can be found at
https://lore.kernel.org/lkml/20241211160318.235056-2-kan.liang@linux.intel.com/
I also added the reviewed-by in the new patch.
Please let me know if there are more comments.
Thanks,
Kan
> Thanks,
> Kan
>>
>> 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
>>>
>>
>>
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Update perf tools topdown documentation
2024-12-10 19:35 [PATCH] Update perf tools topdown documentation Andi Kleen
2024-12-11 10:13 ` James Clark
2024-12-11 15:28 ` Liang, Kan
@ 2024-12-11 17:50 ` Namhyung Kim
2 siblings, 0 replies; 8+ messages in thread
From: Namhyung Kim @ 2024-12-11 17:50 UTC (permalink / raw)
To: Andi Kleen; +Cc: linux-perf-users
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
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Update perf tools topdown documentation
2024-12-11 16:06 ` Liang, Kan
@ 2024-12-11 18:20 ` Ian Rogers
2024-12-11 20:47 ` Liang, Kan
0 siblings, 1 reply; 8+ messages in thread
From: Ian Rogers @ 2024-12-11 18:20 UTC (permalink / raw)
To: Liang, Kan; +Cc: James Clark, Andi Kleen, linux-perf-users, Vince Weaver
On Wed, Dec 11, 2024 at 8:07 AM Liang, Kan <kan.liang@linux.intel.com> wrote:
> > The RDPMC can automatically reset the perf metrics.
> > Maybe change it to "automatically resetting the perf metrics RDPMC"
> >
>
> The new post can be found at
> https://lore.kernel.org/lkml/20241211160318.235056-2-kan.liang@linux.intel.com/
>
> I also added the reviewed-by in the new patch.
>
> Please let me know if there are more comments.
Hi Kan,
Vince Weaver posted to the list a related question on topdown + rdpmc + hybrid:
https://lore.kernel.org/linux-perf-users/b0b0ae91-785e-64f6-348a-ca6edd448b74@maine.edu/
The topic of being rescheduled isn't part of the rdpmc documentation:
https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/tree/include/uapi/linux/perf_event.h?h=perf-tools-next#n610
In the testing we're only testing per-task mode and not per-CPU:
https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/tree/tools/lib/perf/tests/test-evsel.c?h=perf-tools-next#n145
It isn't clear to me how per-CPU would work given rescheduling, you
could read a counter that doesn't match the mmap page unless you pin
everything to just 1 CPU. Given the issues with rdpmc, perhaps it is
safer in the documentation to cover cases without it.
Thanks,
Ian
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Update perf tools topdown documentation
2024-12-11 18:20 ` Ian Rogers
@ 2024-12-11 20:47 ` Liang, Kan
0 siblings, 0 replies; 8+ messages in thread
From: Liang, Kan @ 2024-12-11 20:47 UTC (permalink / raw)
To: Ian Rogers; +Cc: James Clark, Andi Kleen, linux-perf-users, Vince Weaver
On 2024-12-11 1:20 p.m., Ian Rogers wrote:
> On Wed, Dec 11, 2024 at 8:07 AM Liang, Kan <kan.liang@linux.intel.com> wrote:
>>> The RDPMC can automatically reset the perf metrics.
>>> Maybe change it to "automatically resetting the perf metrics RDPMC"
>>>
>>
>> The new post can be found at
>> https://lore.kernel.org/lkml/20241211160318.235056-2-kan.liang@linux.intel.com/
>>
>> I also added the reviewed-by in the new patch.
>>
>> Please let me know if there are more comments.
>
> Hi Kan,
>
> Vince Weaver posted to the list a related question on topdown + rdpmc + hybrid:
> https://lore.kernel.org/linux-perf-users/b0b0ae91-785e-64f6-348a-ca6edd448b74@maine.edu/
> The topic of being rescheduled isn't part of the rdpmc documentation:
> https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/tree/include/uapi/linux/perf_event.h?h=perf-tools-next#n610
Maybe we should emphasis that the example in the documentation is only
for p-core.
diff --git a/tools/perf/Documentation/topdown.txt
b/tools/perf/Documentation/topdown.txt
index 44644e917ffd..a229d0043399 100644
--- a/tools/perf/Documentation/topdown.txt
+++ b/tools/perf/Documentation/topdown.txt
@@ -21,14 +21,14 @@ per architecture.
5.704818971 14.0 27.5
51.3 7.3
...
-New Topdown features in Intel Ice Lake
+New Topdown features in Intel Ice Lake and later p-core
======================================
With Ice Lake CPUs the TopDown metrics are directly available as
fixed counters and do not require generic counters. This allows
to collect TopDown always in addition to other events.
-Using TopDown through RDPMC in applications on Intel Ice Lake
+Using TopDown through RDPMC in applications on Intel Ice Lake and later
p-core
=============================================================
For more fine grained measurements it can be useful to
> In the testing we're only testing per-task mode and not per-CPU:
> https://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/tree/tools/lib/perf/tests/test-evsel.c?h=perf-tools-next#n145
The event type is hard code to PERF_TYPE_HARDWARE, which is available
for both core. It doesn't matter which core the event is scheduled to.
If you plan to add a topdown event, the PERF_TYPE_RAW should be used,
which is the type for the p-core. If the app is scheduled on an e-core,
the event is disabled.
> It isn't clear to me how per-CPU would work given rescheduling, you
> could read a counter that doesn't match the mmap page unless you pin
> everything to just 1 CPU. Given the issues with rdpmc, perhaps it is
> safer in the documentation to cover cases without it.
As long as the scope of the RDPMC is clearly defined, I think it's OK
to add the usage in the documentation.
Thanks,
Kan
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2024-12-11 20:47 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 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).