Re: [PATCH v5 1/7] perf dsos: Switch backing storage to array from rbtree/list

From: Arnaldo Carvalho de Melo
Date: Fri May 03 2024 - 16:21:19 EST


On Mon, Apr 29, 2024 at 11:46:08AM -0700, Ian Rogers wrote:
> DSOs were held on a list for fast iteration and in an rbtree for fast
> finds. Switch to using a lazily sorted array where iteration is just
> iterating through the array and binary searches are the same
> complexity as searching the rbtree. The find may need to sort the
> array first which does increase the complexity, but add operations
> have lower complexity and overall the complexity should remain about
> the same.

With just this first one applied:

⬢[acme@toolbox perf-tools-next]$ git log --oneline -10
325557715f1d8593 (HEAD) perf dsos: Switch backing storage to array from rbtree/list
7b6dd7a923281a7c perf pmu: Assume sysfs events are always the same case
6debc5aa326fa2ee perf test pmu: Test all sysfs PMU event names are the same case
18eb2ca8c18f0612 perf test pmu: Add an eagerly loaded event test
aa1551f299ba414c perf test pmu: Refactor format test and exposed test APIs
785623ee855e893d perf Document: Sysfs event names must be lower or upper case
97c48ea8ff1cd70f perf test pmu-events: Make it clearer that pmu-events tests JSON events
3cdd98b42d212160 (x1/perf-tools-next) perf maps: Remove check_invariants() from maps__lock()
e3123079b906dc2e perf cs-etm: Improve version detection and error reporting
bc5e0e1b93565e37 perf cs-etm: Remove repeated fetches of the ETM PMU
⬢[acme@toolbox perf-tools-next]$

root@number:~# perf -v
perf version 6.9.rc5.g325557715f1d
root@number:~# perf probe -l
DSO [kernel.kallsyms] is still in rbtree when being deleted!
DSO /lib/modules/6.8.7-200.fc39.x86_64/kernel/drivers/hid/hid-sensor-hub.ko.xz is still in rbtree when being deleted!
DSO /lib/modules/6.8.7-200.fc39.x86_64/kernel/drivers/hid/uhid.ko.xz is still in rbtree when being deleted!
DSO /lib/modules/6.8.7-200.fc39.x86_64/kernel/drivers/net/tun.ko.xz is still in rbtree when being deleted!
DSO /lib/modules/6.8.7-200.fc39.x86_64/kernel/fs/overlayfs/overlay.ko.xz is still in rbtree when being deleted!
DSO /lib/modules/6.8.7-200.fc39.x86_64/kernel/net/bluetooth/rfcomm/rfcomm.ko.xz is still in rbtree when being deleted!
DSO /lib/modules/6.8.7-200.fc39.x86_64/kernel/drivers/input/misc/uinput.ko.xz is still in rbtree when being deleted!
DSO /lib/modules/6.8.7-200.fc39.x86_64/kernel/sound/core/seq/snd-seq-dummy.ko.xz is still in rbtree when being deleted!
<SNIP a lot of other modules, probably all of them>

Then with:

65e1e704f37916a0 (HEAD -> perf-tools-next) perf dsos: Switch hand code to bsearch
64377d6b7d5f9a71 perf dsos: Remove __dsos__findnew_link_by_longname_id
8e773b8be95aff66 perf dsos: Remove __dsos__addnew
b1d064fc9b912ece perf dsos: Switch backing storage to array from rbtree/list

applied it continues like that, the next patch in line isn't applying.

I'll push what I have to tmp.perf-tools-next.

- Arnaldo