Messages in this thread Patch in this message | | | Date | Fri, 15 Dec 2023 15:26:46 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH] perf top: Use evsel's cpus to replace user_requested_cpus |
| |
Em Fri, Dec 15, 2023 at 12:59:22PM -0500, Liang, Kan escreveu: > On 2023-12-15 10:36 a.m., Arnaldo Carvalho de Melo wrote: > > #perf report --header-only | grep event > # event : name = cpu_atom/cycles:P/, , id = { 7360, 7361, 7362, 7363, > 7364, 7365, 7366, 7367, 7368, 7369 }, type = 0 (PERF_TYPE_HARDWARE), > size = 136, config = 0xa00000000, { sample_period, sample_freq } = 3000, > sample_type = IP|TID|TIME|PERIOD|IDENTIFIER, read_format = ID|LOST, > disabled = 1, inherit = 1, freq = 1, enable_on_exec = 1, precise_ip = 3, > sample_id_all = 1 > # event : name = cpu_core/cycles:P/, , id = { 7370, 7371, 7372, 7373, > 7374, 7375, 7376, 7377, 7378, 7379, 7380, 7381 }, type = 0 > (PERF_TYPE_HARDWARE), size = 136, config = 0x400000000, { sample_period, > sample_freq } = 3000, sample_type = IP|TID|TIME|PERIOD|IDENTIFIER, > read_format = ID|LOST, disabled = 1, inherit = 1, freq = 1, > enable_on_exec = 1, precise_ip = 3, sample_id_all = 1 > > I think we should move all the modifiers after the "/". The below patch > can fix it. > > https://lore.kernel.org/lkml/20231215175455.1300261-1-kan.liang@linux.intel.com/
Right, I implemented it in a slightly different way, but end result should be the same:
From 5dd1b7ab1ba69ebb8e070923dcc214b7b489ffc2 Mon Sep 17 00:00:00 2001 From: Arnaldo Carvalho de Melo <acme@redhat.com> Date: Fri, 15 Dec 2023 15:23:30 -0300 Subject: [PATCH 1/1] perf evlist: Move event attributes to after the / when uniquefying using the PMU name
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/util/evlist.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index 6f0892803c2249af..3a9505c99490b372 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -2522,7 +2522,7 @@ void evlist__warn_user_requested_cpus(struct evlist *evlist, const char *cpu_lis void evlist__uniquify_name(struct evlist *evlist) { struct evsel *pos; - char *new_name; + char *new_name, *attributes; int ret; if (perf_pmus__num_core_pmus() == 1) @@ -2535,8 +2535,16 @@ void evlist__uniquify_name(struct evlist *evlist) if (strchr(pos->name, '/')) continue; - ret = asprintf(&new_name, "%s/%s/", - pos->pmu_name, pos->name); + attributes = strchr(pos->name, ':'); + if (attributes) + *attributes = '\0'; + + ret = asprintf(&new_name, "%s/%s/%s", + pos->pmu_name, pos->name, attributes ? attributes + 1 : ""); + + if (attributes) + *attributes = ':'; + if (ret) { free(pos->name); pos->name = new_name; -- 2.43.0
| |