From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: Namhyung Kim <namhyung@kernel.org>,
Ingo Molnar <mingo@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
James Clark <james.clark@linaro.org>,
Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
Clark Williams <williams@redhat.com>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: Re: [PATCH 01/15] perf debuginfo: Fetch debuginfo keyed by build ID using debuginfod
Date: Thu, 17 Sep 2026 17:36:22 -0300 [thread overview]
Message-ID: <aqxPRkwFMfQ_gJyq@x2> (raw)
In-Reply-To: <CAP-5=fX5+7K_9eApj-t87iFVSbUPZDpgnMYWfSoCcDynrYqixA@mail.gmail.com>
On Thu, Sep 17, 2026 at 10:58:15AM -0700, Ian Rogers wrote:
> On Thu, Sep 17, 2026 at 8:55 AM Arnaldo Carvalho de Melo
> <acme@kernel.org> wrote:
>
> [snip]
>
> > +/*
> > + * The build IDs already fetched in this session, and the path of the file
> > + * that came back for each, so that the repeated requests for the same build
> > + * ID, dso__debuginfo() is called per symbol annotated, are answered with a
> > + * strdup() instead of another client: the file is in the debuginfod client
> > + * cache already and its path checked before being handed out, in case that
> > + * cache is cleaned from under us.
> > + *
> > + * Guarded by debuginfod__fetch_lock. Only a fetch that brought a file back
> > + * gets an entry: one that didn't is recorded in debuginfod__misses as a miss,
> > + * and that is what keeps the rest of the session from asking for it again.
> > + * Like debuginfod__misses this grows with the number of build IDs in the
> > + * workload, one small entry each, and is not trimmed.
> > + */
> > +struct debuginfo_lookup {
> > + struct list_head node;
> > + struct build_id bid;
> > + char *path;
> > +};
> > +
> > +static LIST_HEAD(debuginfo_lookups);
>
> I'd still prefer keeping the debuginfos owned by the DSOs rather than
> having debuginfo use a global cache of debuginfos - I expect the
> debuginfos to have some non-trivial memory overhead. With the
> debuginfo in the DSO, when/if the DSO goes away we can reclaim all the
> memory without worrying about a separate global data structure. We can
> find DSOs in multiple ways with dsos__findnew_id:
> https://web.git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/tree/tools/perf/util/dsos.c#n343
> We match by name, but if those differ:
> https://web.git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/tree/tools/perf/util/dsos.c#n117
> We match by inode and/or build ID:
> https://web.git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/tree/tools/perf/util/dso.c#n1473
>
> So struct dsos is a build ID indexed store of DSOs and their owned
> debuginfo. We find DSOs off a machine, but I believe we always have
> access to the relevant struct machine. In the worst case for probes,
> for example, we need to set up a host machine. Using machines
> inherently provides some lock sharding, and they also have the ability
> to reclaim memory.
Working on it, no preference, so doing it the way you describe seems ok,
will post later.
- Arnaldo
next prev parent reply other threads:[~2026-09-17 20:36 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-17 15:55 [PATCH v7 0/15] perf tools: Annotate fixes, stdio progress indication, debuginfo-client in more places Arnaldo Carvalho de Melo
2026-09-17 15:55 ` [PATCH 01/15] perf debuginfo: Fetch debuginfo keyed by build ID using debuginfod Arnaldo Carvalho de Melo
2026-09-17 16:03 ` sashiko-bot
2026-09-17 17:58 ` Ian Rogers
2026-09-17 20:36 ` Arnaldo Carvalho de Melo [this message]
2026-09-17 15:55 ` [PATCH 02/15] perf debuginfo: Set DEBUGINFOD_URLS from /etc/debuginfod when unset Arnaldo Carvalho de Melo
2026-09-17 16:07 ` sashiko-bot
2026-09-17 15:55 ` [PATCH 03/15] perf config: Move perf_config__set_variable() to util/config.c Arnaldo Carvalho de Melo
2026-09-17 16:11 ` sashiko-bot
2026-09-17 15:55 ` [PATCH 04/15] perf debuginfo: Let the user skip and disable debuginfod fetches Arnaldo Carvalho de Melo
2026-09-17 16:05 ` sashiko-bot
2026-09-17 15:55 ` [PATCH 05/15] perf debuginfo: Show the debuginfod fetch progress and keys in the TUI Arnaldo Carvalho de Melo
2026-09-17 16:09 ` sashiko-bot
2026-09-17 15:55 ` [PATCH 06/15] perf symbol: Fall back to fetching the vmlinux by build ID Arnaldo Carvalho de Melo
2026-09-17 16:08 ` sashiko-bot
2026-09-17 15:55 ` [PATCH 07/15] perf annotate-data: Show the sample count in the data-type browser Arnaldo Carvalho de Melo
2026-09-17 16:04 ` sashiko-bot
2026-09-17 15:55 ` [PATCH 08/15] perf report: Add --progress option Arnaldo Carvalho de Melo
2026-09-17 16:02 ` sashiko-bot
2026-09-17 15:55 ` [PATCH 09/15] perf scripts: Add perf-stuck, to tell where a running perf is stuck Arnaldo Carvalho de Melo
2026-09-17 16:04 ` sashiko-bot
2026-09-17 15:55 ` [PATCH 10/15] perf dwarf-aux: Bound the type chases for broken debug info Arnaldo Carvalho de Melo
2026-09-17 16:03 ` sashiko-bot
2026-09-17 15:55 ` [PATCH 11/15] perf dwarf-aux: Add die_same_file() and die_get_type_die() Arnaldo Carvalho de Melo
2026-09-17 16:09 ` sashiko-bot
2026-09-17 15:55 ` [PATCH 12/15] perf annotate-data: Resolve type DIEs in the debug file they came from Arnaldo Carvalho de Melo
2026-09-17 16:09 ` sashiko-bot
2026-09-17 15:55 ` [PATCH 13/15] perf annotate-data: Bound the member nesting recursion Arnaldo Carvalho de Melo
2026-09-17 16:08 ` sashiko-bot
2026-09-17 15:55 ` [PATCH 14/15] perf mem record: Request PERF_SAMPLE_CPU by default Arnaldo Carvalho de Melo
2026-09-17 16:15 ` sashiko-bot
2026-09-17 15:55 ` [PATCH 15/15] perf mem record: Use the IBS swfilt filter when available Arnaldo Carvalho de Melo
2026-09-17 16:09 ` sashiko-bot
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=aqxPRkwFMfQ_gJyq@x2 \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=tglx@linutronix.de \
--cc=williams@redhat.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.