http://knol.google.com/k/linux-performance-tuning-and-measurement ld.so (Dynamic Loader) When a dynamically linked application is executed, the Linux loader, ld.so, runs first. ld.so loads all the application's libraries and connects symbols that the application uses with the functions the libraries provide. Because different libraries were originally linked at different and possibly overlapping places in memory, the linker needs to sort through all the symbols and make sure that each lives at a different place in memory. When a symbol is moved from one virtual address to another, this is called relocation. It takes time for the loader to do this, and it is much better if it does not need to be done at all. The prelink application aims to do that by rearranging the system libraries of the entire systems so that they do not overlap. An application with a high number of relocations may not have been prelinked. The Linux loader usually runs without any intervention from the user, and by just executing a dynamic program, it is run automatically. Although the execution of the loader is hidden from the user, it still takes time to run and can potentially slow down an application's startup time. When you ask for loader statistics, the loader shows the amount of work it is doing and enables you to figure out whether it is a bottleneck. The ld command is invisibly run for every Linux application that uses shared libraries. By setting the appropriate environment variables, we can ask it to dump information about its execution: me% env LD_DEBUG=statistics LD_DEBUG_OUTPUT=/tmp/ld$$ ls Desktop bin doit.taskers partitions src Mailbox cron etc projects sysctl.out Maildir doit.dirsize libexec rescue usr-local me% cat /tmp/ld1180.1849 1849: 1849: runtime linker statistics: 1849: total startup time in dynamic loader: 716832 clock cycles 1849: time needed for relocation: 200664 clock cycles (27.9%) 1849: number of relocations: 119 1849: number of relocations from cache: 6 1849: number of relative relocations: 0 1849: time needed to load objects: 348336 clock cycles (48.5%) 1849: 1849: runtime linker statistics: 1849: final number of relocations: 161 1849: final number of relocations from cache: 6