Thread (14 messages) 14 messages, 4 authors, 2025-10-15

Re: [RFC PATCH v1] btf: Sort BTF types by name and kind to optimize btf_find_by_name_kind lookup

From: Donglin Peng <hidden>
Date: 2025-10-14 01:54:39
Also in: bpf, lkml

On Tue, Oct 14, 2025 at 8:22 AM Alexei Starovoitov
[off-list ref] wrote:
On Mon, Oct 13, 2025 at 5:15 PM Andrii Nakryiko
[off-list ref] wrote:
quoted
On Mon, Oct 13, 2025 at 4:53 PM Alexei Starovoitov
[off-list ref] wrote:
quoted
On Mon, Oct 13, 2025 at 4:40 PM Andrii Nakryiko
[off-list ref] wrote:
quoted
Just a few observations (if we decide to do the sorting of BTF by name
in the kernel):
iirc we discussed it in the past and decided to do sorting in pahole
and let the kernel verify whether it's sorted or not.
Then no extra memory is needed.
Or was that idea discarded for some reason?
Don't really remember at this point, tbh. Pre-sorting should work
(though I'd argue that then we should only sort by name to make this
sorting universally useful, doing linear search over kinds is fast,
IMO). Pre-sorting won't work for program BTFs, don't know how
important that is. This indexing on demand approach would be
universal. ¯\_(ツ)_/¯

Overall, paying 300KB for sorted index for vmlinux BTF for cases where
we repeatedly need this seems ok to me, tbh.
If pahole sorting works I don't see why consuming even 300k is ok.
kallsyms are sorted during the build too.
Thanks. We did discuss pre-sorting in pahole in the threads:

https://lore.kernel.org/all/CAADnVQLMHUNE95eBXdy6=+gHoFHRsihmQ75GZvGy-hSuHoaT5A@mail.gmail.com/ (local)
https://lore.kernel.org/all/CAEf4BzaXHrjoEWmEcvK62bqKuT3de__+juvGctR3=e8avRWpMQ@mail.gmail.com/ (local)

However, since that approach depends on newer pahole features and
btf_find_by_name_kind is already being called quite frequently, I suggest
we first implement sorting within the kernel, and subsequently add pre-sorting
support in pahole.
In the other thread we discuss adding LOCSEC for ~6M. That thing should
be pahole-sorted too.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help