Feed on
Posts
Comments

Archive for March, 2010

The fastest review I ever got was when I deleted a bunch of code from libjar. It was so riddled crud it was next to impossible to modify the code. That was a mere 24KB patch produced manually. Ehren just put my personal records to shame with a 94KB patch that got r+ed at breakneck [...]

Linux Startup Inefficiency

There is a little bit of a disconnect between the kernel, the dynamic linker and compile-time linker. As I mentioned in my main “startup sucks” post: not-notifying the kernel of your patterns can kill performance, so can reading files backwards. Turns out that if the compile-time linker lays out files without considering *exactly* how they [...]

Madvise, Prelink Update

Got some helpful comments on my previous post. madvise(WILLNEED) in ld.so Frank Ch. Eigler pointed out that other people have noticed the madvise/mmap deficiency in the dynamic linker. Unfortunately those unfortunate people did not have the ability to flush caches or to measure page faults exactly. Linux has gotten a lot nicer for diagnosing this. [...]

Note: I am doing my measurements and experiments on Fedora 12, once I feel that I understand and can solve the problems on Linux, other operating systems will follow. The aim of this post is to document what I have learned about the mysterious process of loading programs from the filesystem perspective. A binary is broken [...]

When in Trouble, Draw a Picture

Graphs Note: the following graphs broke on the nightlies this week. I would appreciate help with reducing this to a proper testcase. They work fine on older nightlies and released versions of Firefox. Non-spidermonkey JS engines wont work as they don’t support destructuring assignment and other goodies. Once I graphed my file-access logs, most of [...]

Extensions & Startup

Dietrich blogged a “wake up and smell the startup” executive overview of startup issues caused by our extension practices. This post is a “numbers” followup. For this experiment I installed a brand-spankin-new copy of Linux Firefox 3.6. Firefox is installed on a 7200 hard drive, the rest of my system lives on an SSD. The [...]

In an earlier post I described my Fiji hack: how to use some nasty instrumentation to spit out ld scripts to speed up cold startup. This week I tried to extract more data out of the binary to lay it out even better. Trouble is that even if one lays out functions perfectly, they load [...]