Messages in this thread | | | Date | Fri, 15 Dec 2023 13:53:12 -0500 | Subject | Re: [PATCH] perf top: Use evsel's cpus to replace user_requested_cpus | From | "Liang, Kan" <> |
| |
On 2023-12-15 1:26 p.m., Arnaldo Carvalho de Melo wrote: > 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>
Looks good to me and verified.
Tested-by: Kan Liang <kan.liang@linux.intel.com>
Thanks, Kan > --- > 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;
| |