On Wednesday 26 January 2011 06:49:11 Alexander Kabaev wrote: > On Tue, 25 Jan 2011 21:40:42 -0500 > > Mark Saad <nones...@longcount.org> wrote: > > Hello Hackers > > > > The NetBSD folks have a nice improvement with the rtld-elf subsystem, > > known as "Negative Symbol Cache" . > > > > http://blog.netbsd.org/tnf/entry/netbsd_runtime_linker_gains_negative > > > > Roy Marples roy@ has a simple write up of the change. > > > > I took the basic idea from FreeBSD, but improved the performance > > drastically. Basically, the huge win is by caching both breadth and > > depth of the needed/weak symbol lookup. > > Easiest to think of a,b,c,d as a matrix and FreeBSD just cache a row > > where we cache both rows and columns. > > > > Has anyone looked into porting the changes back to FreeBSD ? The > > improvement on load time for things like firefox, openoffice, and java > > is huge on NetBSD. It looks like this change could improve load times > > on FreeBSD in the same ways. > > This is a second time someone posts this to public mailing list and > curiously enough is a second time it suggested that someone else is to > do the investigation. From the quick look, the commit in question is > more or less a direct rip-off of Donelists we had for ages and as > such is completely over-hyped. The only extra quirk that said commit > does is an optimization of a dlsym() call, which is hardly ever in > critical performance path. Said optimization is trivial and easy to > try. Here you have it: > http://people.freebsd.org/~kan/rtld-symlook-depth.diff > > Since it only applies to dlsym, it only affects programs that are heavy > plugin users, which I suppose is the category OpenOffice and firefox > both fall into. Care to do some benchmarks with and without the > patch and report the results? I frankly doubt that you'll see any > noticeable difference compared to our stock rtld's performance.
I benchmarked the impact said patch has on the boot-time of my system. I timed the boot-time to when KDE launches autostart programs and once all programs have loaded (I run a few extra programs, such as amarok). The latter measure requires human action thus it has extra, human, variance in its measure. I tried an older version of rtld (about 2 months old), current version of rtld and the new (patched) rtld. I ran each test three times. There was little variance in the tests and I am confident that there is no difference between the different rtld versions and my boot-time. Here is a summary of my boot times (in seconds). First measure is when KDE autostarts programs, the latter is when I determined when all programs had launched. rtld-old: 69 96 rtld: 69 94 rtld-new: 69 94 Please note that kernel boot time is approximately 10 seconds and kdm is delayed by about 10 seconds thus 20 seconds can be removed from above numbers to determine non-kernel boot wall-time. I would like to add that the blog entry claims a substantial improvement for some use cases. Is it not worth to optimise these fringe cases as one mans fringe case is another mans normal case (or woman as one prefers)?
signature.asc
Description: This is a digitally signed message part.