Hi Romain, On Wed, Jun 21, 2023 at 06:14:27PM +0000, Romain GEISSLER wrote: > > Le 21 juin 2023 à 18:24, Mark Wielaard <m...@klomp.org> a écrit : > > > > Seeing those performance results I understand why you were suspecting > > the linked list data structure used in elf_getdata_rawchunk. > > > > Would you be able to test a rebuild libelf with the attached patch, > > which replaces that datastructure with a binary search tree? > > > > It didn't really show much speedup locally (in the noise, maybe 0.01 > > sec faster on ~0.25 sec run). But if there are more than 2000 calls to > > elf_getdata_rawchunk it should make things faster. > > Actually I have spent some time today to reproduce the issue for > real, using directly systemd. The details can be found in > https://github.com/systemd/systemd/pull/28093 which was just > merged. This change in systemd is enough to fix the biggest part of > the "slow" parsing of cores. Yet even with my systemd patch, we will > still call elf_getdata_rawchunk 2000 times if the crashing process > had 2000 shared libraries, so indeed your patch in elfutils might > still be welcome. I will test it later when I go home, or tomorrow.
That patch looks good. It should reduce the number of calls to elf_getdata_rawchunk a lot. Making it less urgent that function is fast. But if you could test it that would be appreciated. I'll also test it a bit more and will probably merge it if no issues show up since it does seem better than keep using the linear list. Thanks, Mark