From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Darren Hart <dvhart@infradead.org>,
Davidlohr Bueso <dave@stgolabs.net>,
James Clark <james.clark@arm.com>,
John Garry <john.g.garry@oracle.com>,
Riccardo Mancini <rickyman7@gmail.com>,
Yury Norov <yury.norov@gmail.com>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Andrew Morton <akpm@linux-foundation.org>,
Leo Yan <leo.yan@linaro.org>, Andi Kleen <ak@linux.intel.com>,
Thomas Richter <tmricht@linux.ibm.com>,
Kan Liang <kan.liang@linux.intel.com>,
Madhavan Srinivasan <maddy@linux.ibm.com>,
Shunsuke Nakamura <nakamura.shun@fujitsu.com>,
Song Liu <song@kernel.org>,
Masami Hiramatsu <mhiramat@kernel.org>,
Steven Rostedt <rostedt@goodmis.org>,
Miaoqian Lin <linmq006@gmail.com>,
Stephen Brennan <stephen.s.brennan@oracle.com>,
Kajol Jain <kjain@linux.ibm.com>,
Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>,
German Gomez <german.gomez@arm.com>,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
Eric Dumazet <edumazet@google.com>,
Dmitry Vyukov <dvyukov@google.com>, Hao Luo <haoluo@google.com>,
Stephane Eranian <eranian@google.com>
Subject: Re: [PATCH v5 00/17] Reference count checker and related fixes
Date: Wed, 5 Apr 2023 10:20:53 -0300 [thread overview]
Message-ID: <ZC11tTdXuJR/M8o+@kernel.org> (raw)
In-Reply-To: <527b8bcb-d462-5fff-5310-703b55902a61@intel.com>
Em Wed, Apr 05, 2023 at 11:47:26AM +0300, Adrian Hunter escreveu:
> On 4/04/23 21:54, Arnaldo Carvalho de Melo wrote:
> > Em Tue, Apr 04, 2023 at 03:41:38PM -0300, Arnaldo Carvalho de Melo escreveu:
> >> Em Tue, Apr 04, 2023 at 08:25:41PM +0300, Adrian Hunter escreveu:
> >>> On 4/04/23 18:58, Ian Rogers wrote:
> >>>> Ping. It would be nice to have this landed or at least the first 10
> >>>> patches that refactor the map API and are the bulk of the
> >>>> lines-of-code changed. Having those landed would make it easier to
> >>>> rebase in the future, but I also think the whole series is ready to
> >>>> go.
> >>>
> >>> I was wondering if the handling of dynamic data like struct map makes
> >>> any sense at present. Perhaps someone can reassure me.
> >>>
> >>> A struct map can be updated when an MMAP event is processed. So it
> >>
> >> Yes, it can, and the update is made via a new PERF_RECORD_MMAP, right?
> >>
> >> So:
> >>
> >> perf_event__process_mmap()
> >> machine__process_mmap2_event()
> >> map__new() + thread__insert_map(thread, map)
> >> maps__fixup_overlappings()
> >> maps__insert(thread->maps, map);
> >>
> >> Ok, from this point on new samples on ] map->start .. map->end ] will
> >> grab a refcount to this new map in its hist_entry, right?
> >>
> >> When we want to sort by dso we will look at hist_entry->map->dso, etc.
> >
> > And in 'perf top' we go decaying hist entries, when we delete the
> > hist_entry, drop the reference count to things it holds, that will then
> > be finally deleted when no more hist_entries point to it.
> >
> >>> seems like anything racing with event processing is already broken, and
> >>> reference counting / locking cannot help - unless there is also
> >>> copy-on-write (which there isn't at present)?
> So I checked, and struct map *is* copy-on-write in
> maps__fixup_overlappings(), so that should not be a problem.
> >>> For struct maps, referencing it while simultaneously processing
> >>> events seems to make even less sense?
> >> Can you elaborate some more?
> Only that the maps are not necessarily stable e.g. the map that you
> need has been replaced in the meantime.
Well, it may be sliced in several or shrunk by new ones overlapping it,
but it if completely disappears, say a new map starts before the one
disappearing and ends after it, then it remains with reference counts if
there are hist_entries (or other data structure) pointing to them,
right?
> But upon investigation, the only user at the moment is
> maps__find_ams(). If we kept the removed maps (we used to),
> it might be possible to make maps__find_ams() work correctly
> in any case.
Humm, I think I see what you mean, maps__find_ams() is called when we
are annotating a symbol, not when we're processing a sample, so it may
be the case that at the time of annotation the executable that is being
found (its parsing the target IP of a 'call' assembly instruction) was
replaced, is that the case?
- Arnaldo
next prev parent reply other threads:[~2023-04-05 13:21 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-20 21:22 [PATCH v5 00/17] Reference count checker and related fixes Ian Rogers
2023-03-20 21:22 ` [PATCH v5 01/17] perf map: Move map list node into symbol Ian Rogers
2023-03-20 21:22 ` [PATCH v5 02/17] perf maps: Remove rb_node from struct map Ian Rogers
2023-03-20 21:22 ` [PATCH v5 03/17] perf maps: Add functions to access maps Ian Rogers
2023-03-20 21:22 ` [PATCH v5 04/17] perf map: Add accessor for dso Ian Rogers
2023-03-20 21:22 ` [PATCH v5 05/17] perf map: Add accessor for start and end Ian Rogers
2023-03-20 21:22 ` [PATCH v5 06/17] perf map: Rename map_ip and unmap_ip Ian Rogers
2023-03-20 21:22 ` [PATCH v5 07/17] perf map: Add helper for " Ian Rogers
2023-03-20 21:22 ` [PATCH v5 08/17] perf map: Add accessors for prot, priv and flags Ian Rogers
2023-03-20 21:22 ` [PATCH v5 09/17] perf map: Add accessors for pgoff and reloc Ian Rogers
2023-03-20 21:22 ` [PATCH v5 10/17] perf test: Add extra diagnostics to maps test Ian Rogers
2023-03-20 21:22 ` [PATCH v5 11/17] perf maps: Modify maps_by_name to hold a reference to a map Ian Rogers
2023-03-20 21:22 ` [PATCH v5 12/17] perf map: Changes to reference counting Ian Rogers
2023-03-20 21:22 ` [PATCH v5 13/17] libperf: Add reference count checking macros Ian Rogers
2023-03-20 21:22 ` [PATCH v5 14/17] perf cpumap: Add reference count checking Ian Rogers
2023-03-20 21:22 ` [PATCH v5 15/17] perf namespaces: " Ian Rogers
2023-03-20 21:22 ` [PATCH v5 16/17] perf maps: " Ian Rogers
2023-03-20 21:22 ` [PATCH v5 17/17] perf map: " Ian Rogers
2023-04-04 15:58 ` [PATCH v5 00/17] Reference count checker and related fixes Ian Rogers
2023-04-04 17:02 ` Arnaldo Carvalho de Melo
2023-04-04 17:07 ` Arnaldo Carvalho de Melo
2023-04-04 17:25 ` Adrian Hunter
2023-04-04 17:35 ` Ian Rogers
2023-04-04 18:37 ` Adrian Hunter
2023-04-04 19:22 ` Arnaldo Carvalho de Melo
2023-04-04 19:53 ` Arnaldo Carvalho de Melo
2023-04-04 19:54 ` Arnaldo Carvalho de Melo
2023-04-04 18:41 ` Arnaldo Carvalho de Melo
2023-04-04 18:54 ` Arnaldo Carvalho de Melo
2023-04-05 8:47 ` Adrian Hunter
2023-04-05 13:20 ` Arnaldo Carvalho de Melo [this message]
2023-04-05 16:25 ` Adrian Hunter
2023-04-06 12:51 ` 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=ZC11tTdXuJR/M8o+@kernel.org \
--to=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=ak@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=alexey.v.bayduraev@linux.intel.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=dave@stgolabs.net \
--cc=dvhart@infradead.org \
--cc=dvyukov@google.com \
--cc=edumazet@google.com \
--cc=eranian@google.com \
--cc=german.gomez@arm.com \
--cc=haoluo@google.com \
--cc=irogers@google.com \
--cc=james.clark@arm.com \
--cc=john.g.garry@oracle.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=kjain@linux.ibm.com \
--cc=leo.yan@linaro.org \
--cc=linmq006@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=maddy@linux.ibm.com \
--cc=mark.rutland@arm.com \
--cc=mhiramat@kernel.org \
--cc=mingo@redhat.com \
--cc=nakamura.shun@fujitsu.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=rickyman7@gmail.com \
--cc=rostedt@goodmis.org \
--cc=song@kernel.org \
--cc=stephen.s.brennan@oracle.com \
--cc=tglx@linutronix.de \
--cc=tmricht@linux.ibm.com \
--cc=yury.norov@gmail.com \
/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.