From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Leo Yan <leo.yan@linaro.org>
Cc: Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
Ian Rogers <irogers@google.com>,
John Garry <john.g.garry@oracle.com>,
James Clark <james.clark@arm.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v5 11/16] perf kvm: Use histograms list to replace cached list
Date: Thu, 16 Mar 2023 07:13:02 -0300 [thread overview]
Message-ID: <ZBLrruagawAbxqoz@kernel.org> (raw)
In-Reply-To: <20230316090418.GA2665235@leoy-yangtze.lan>
Em Thu, Mar 16, 2023 at 05:04:18PM +0800, Leo Yan escreveu:
> On Thu, Mar 16, 2023 at 12:42:53AM -0700, Namhyung Kim wrote:
>
> [...]
>
> > > static struct kvm_event *find_create_kvm_event(struct perf_kvm_stat *kvm,
> > > struct event_key *key,
> > > struct perf_sample *sample)
> > > {
> > > struct kvm_event *event;
> > > - struct list_head *head;
> > > + struct hist_entry *he;
> > > + struct kvm_info *ki;
> > >
> > > BUG_ON(key->key == INVALID_KEY);
> > >
> > > - head = &kvm->kvm_events_cache[kvm_events_hash_fn(key->key)];
> > > - list_for_each_entry(event, head, hash_entry) {
> > > - if (event->key.key == key->key && event->key.info == key->info)
> > > - return event;
> > > + ki = zalloc(sizeof(*ki));
> > > + if (!ki) {
> > > + pr_err("Failed to allocate kvm info\n");
> > > + return NULL;
> > > }
> > >
> > > - event = kvm_alloc_init_event(kvm, key, sample);
> > > - if (!event)
> > > + kvm->events_ops->decode_key(kvm, key, ki->name);
> > > + he = hists__add_entry_ops(&kvm_hists.hists, &kvm_ev_entry_ops,
> > > + &kvm->al, NULL, NULL, NULL, ki, sample, true);
> >
> > The hists__add_entry{,_ops} can return either a new entry
> > or an existing one. I think it'd leak the 'ki' when it returns
> > the existing one. You may deep-copy it in hist_entry__init()
> > and always free the 'ki' here.
>
> Thanks for pointing out this, Namhyung. I will fix it.
>
> @Arnaldo, do you want me to send an appending patch, or will you drop
> this patch series from your branch so I send a new patch set?
>
> > Another thought on this. Lots of fields in the hist_entry are
> > not used for kvm. We might split the hist_entry somehow
> > so that we can use unnecessary parts only. But that could
> > be a future project. :)
>
> Yeah, I found now hist_entry contains many fields
> (branch_info/mem_info/kvm_info/block_info); we can consider to
> refactor the struct hist_entry to use an abstract pointer to refer
> tool's specific data, this could be easily extend hist_entry to
> support more tools.
Since I build tested this already and had the other fixes, I'm pushing
this out to perf-tools-next (and perf/core for a while, for people not
knowing about the new nbranch names) and you can continue from there,
ok?
- Arnaldo
WARNING: multiple messages have this Message-ID (diff)
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Leo Yan <leo.yan@linaro.org>
Cc: Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
Ian Rogers <irogers@google.com>,
John Garry <john.g.garry@oracle.com>,
James Clark <james.clark@arm.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v5 11/16] perf kvm: Use histograms list to replace cached list
Date: Thu, 16 Mar 2023 07:13:02 -0300 [thread overview]
Message-ID: <ZBLrruagawAbxqoz@kernel.org> (raw)
In-Reply-To: <20230316090418.GA2665235@leoy-yangtze.lan>
Em Thu, Mar 16, 2023 at 05:04:18PM +0800, Leo Yan escreveu:
> On Thu, Mar 16, 2023 at 12:42:53AM -0700, Namhyung Kim wrote:
>
> [...]
>
> > > static struct kvm_event *find_create_kvm_event(struct perf_kvm_stat *kvm,
> > > struct event_key *key,
> > > struct perf_sample *sample)
> > > {
> > > struct kvm_event *event;
> > > - struct list_head *head;
> > > + struct hist_entry *he;
> > > + struct kvm_info *ki;
> > >
> > > BUG_ON(key->key == INVALID_KEY);
> > >
> > > - head = &kvm->kvm_events_cache[kvm_events_hash_fn(key->key)];
> > > - list_for_each_entry(event, head, hash_entry) {
> > > - if (event->key.key == key->key && event->key.info == key->info)
> > > - return event;
> > > + ki = zalloc(sizeof(*ki));
> > > + if (!ki) {
> > > + pr_err("Failed to allocate kvm info\n");
> > > + return NULL;
> > > }
> > >
> > > - event = kvm_alloc_init_event(kvm, key, sample);
> > > - if (!event)
> > > + kvm->events_ops->decode_key(kvm, key, ki->name);
> > > + he = hists__add_entry_ops(&kvm_hists.hists, &kvm_ev_entry_ops,
> > > + &kvm->al, NULL, NULL, NULL, ki, sample, true);
> >
> > The hists__add_entry{,_ops} can return either a new entry
> > or an existing one. I think it'd leak the 'ki' when it returns
> > the existing one. You may deep-copy it in hist_entry__init()
> > and always free the 'ki' here.
>
> Thanks for pointing out this, Namhyung. I will fix it.
>
> @Arnaldo, do you want me to send an appending patch, or will you drop
> this patch series from your branch so I send a new patch set?
>
> > Another thought on this. Lots of fields in the hist_entry are
> > not used for kvm. We might split the hist_entry somehow
> > so that we can use unnecessary parts only. But that could
> > be a future project. :)
>
> Yeah, I found now hist_entry contains many fields
> (branch_info/mem_info/kvm_info/block_info); we can consider to
> refactor the struct hist_entry to use an abstract pointer to refer
> tool's specific data, this could be easily extend hist_entry to
> support more tools.
Since I build tested this already and had the other fixes, I'm pushing
this out to perf-tools-next (and perf/core for a while, for people not
knowing about the new nbranch names) and you can continue from there,
ok?
- Arnaldo
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-03-16 10:14 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-15 14:50 [PATCH v5 00/16] perf kvm: Support histograms and TUI mode Leo Yan
2023-03-15 14:50 ` Leo Yan
2023-03-15 14:50 ` [PATCH v5 01/16] perf kvm: Refactor overall statistics Leo Yan
2023-03-15 14:50 ` Leo Yan
2023-03-15 14:50 ` [PATCH v5 02/16] perf kvm: Add pointer to 'perf_kvm_stat' in kvm event Leo Yan
2023-03-15 14:50 ` Leo Yan
2023-03-15 14:50 ` [PATCH v5 03/16] perf kvm: Move up metrics helpers Leo Yan
2023-03-15 14:50 ` Leo Yan
2023-03-15 19:44 ` Arnaldo Carvalho de Melo
2023-03-15 19:44 ` Arnaldo Carvalho de Melo
2023-03-15 14:51 ` [PATCH v5 04/16] perf kvm: Use subtraction for comparison metrics Leo Yan
2023-03-15 14:51 ` Leo Yan
2023-03-15 14:51 ` [PATCH v5 05/16] perf kvm: Use macro to replace variable 'decode_str_len' Leo Yan
2023-03-15 14:51 ` Leo Yan
2023-03-15 14:51 ` [PATCH v5 06/16] perf kvm: Introduce histograms data structures Leo Yan
2023-03-15 14:51 ` Leo Yan
2023-03-15 19:45 ` Arnaldo Carvalho de Melo
2023-03-15 19:45 ` Arnaldo Carvalho de Melo
2023-03-16 3:02 ` Leo Yan
2023-03-16 3:02 ` Leo Yan
2023-03-15 14:51 ` [PATCH v5 07/16] perf kvm: Pass argument 'sample' to kvm_alloc_init_event() Leo Yan
2023-03-15 14:51 ` Leo Yan
2023-03-15 14:51 ` [PATCH v5 08/16] perf kvm: Parse address location for samples Leo Yan
2023-03-15 14:51 ` Leo Yan
2023-03-15 14:51 ` [PATCH v5 09/16] perf hist: Add 'kvm_info' field in histograms entry Leo Yan
2023-03-15 14:51 ` Leo Yan
2023-03-15 14:51 ` [PATCH v5 10/16] perf kvm: Add dimensions for KVM event statistics Leo Yan
2023-03-15 14:51 ` Leo Yan
2023-03-15 14:51 ` [PATCH v5 11/16] perf kvm: Use histograms list to replace cached list Leo Yan
2023-03-15 14:51 ` Leo Yan
2023-03-16 7:42 ` Namhyung Kim
2023-03-16 7:42 ` Namhyung Kim
2023-03-16 9:04 ` Leo Yan
2023-03-16 9:04 ` Leo Yan
2023-03-16 10:13 ` Arnaldo Carvalho de Melo [this message]
2023-03-16 10:13 ` Arnaldo Carvalho de Melo
2023-03-16 15:14 ` Leo Yan
2023-03-16 15:14 ` Leo Yan
2023-03-15 14:51 ` [PATCH v5 12/16] perf kvm: Polish sorting key Leo Yan
2023-03-15 14:51 ` Leo Yan
2023-03-15 14:51 ` [PATCH v5 13/16] perf kvm: Support printing attributions for dimensions Leo Yan
2023-03-15 14:51 ` Leo Yan
2023-03-15 14:51 ` [PATCH v5 14/16] perf kvm: Add dimensions for percentages Leo Yan
2023-03-15 14:51 ` Leo Yan
2023-03-15 14:51 ` [PATCH v5 15/16] perf kvm: Add TUI mode for stat report Leo Yan
2023-03-15 14:51 ` Leo Yan
2023-03-15 14:51 ` [PATCH v5 16/16] perf kvm: Update documentation to reflect new changes Leo Yan
2023-03-15 14:51 ` Leo Yan
2023-03-15 19:35 ` [PATCH v5 00/16] perf kvm: Support histograms and TUI mode Arnaldo Carvalho de Melo
2023-03-15 19:35 ` Arnaldo Carvalho de Melo
2023-03-16 3:10 ` Leo Yan
2023-03-16 3:10 ` Leo Yan
2023-03-16 10:11 ` Arnaldo Carvalho de Melo
2023-03-16 10:11 ` Arnaldo Carvalho de Melo
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=ZBLrruagawAbxqoz@kernel.org \
--to=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=irogers@google.com \
--cc=james.clark@arm.com \
--cc=john.g.garry@oracle.com \
--cc=jolsa@kernel.org \
--cc=leo.yan@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.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.