speed process startup by 7%

Jakub Jelinek jakub at redhat.com
Wed Jan 11 15:16:55 UTC 2006


On Wed, Jan 11, 2006 at 07:03:17AM -0800, John Reiser wrote:
> https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=162797
> 
> The kernel's random placement of the vDSO page disrupts prelinking.
> This happens to about 7% of the execve on x86 that use only libc.so.6,
> and grows to more than 60% of the execve for KDE, Gnome, multimedia
> or any application with many and/or large prelinked shared libraries.
> 
> The bugzilla 162797 contains a patch which reduces the cost to zero,
> and offers the administrator more choices: current random vDSO,
> vDSO one page below STACK_TOP, vDSO just below .text of main.
> It could be extended to place vDSO just below .text of PT_INTERP
> (ld-linux.so.2), which would keep some benefits of randomness
> (namely, the randomness of prelinking) yet still avoid stepping
> on prelinked shared libraries.  (Prelink policy leaves at least
> one page between prelinked libs.)

Prelink by default allocates libs on i?86 in the
0x00101000 .. 0x00e00000
0x02000000 .. 0x08000000
0x41000000 .. 0x50000000
regions.  So, if kernel wants to put vDSO randomly into the ASCII zone,
it can have 528 choices (2MB from 0xe00000 to 0x1010000) or if it doesn't
care about that, it can use 18MB (0xe00000 to 0x2000000), i.e. 4608
possibile placements.
Of course it is possible to change prelink to pick up different
ranges (though, the 0 .. 1MB+4KB range is not an option due to various
emulators that need that range and from 0x08000000 or so start binaries
and if possible, prelink would like to use at least part of the ASCII zone).

	Jakub




More information about the fedora-test-list mailing list