[OE-core] [PATCH 4/4] Revert "local.conf.sample: Disable image-prelink by default"
Khem Raj
raj.khem at gmail.com
Tue Nov 3 04:52:07 UTC 2015
On Mon, Nov 2, 2015 at 6:04 PM, Mark Hatle <mark.hatle at windriver.com> wrote:
> On 11/2/15 6:10 PM, Khem Raj wrote:
>> On Mon, Nov 2, 2015 at 4:07 PM, Mark Hatle <mark.hatle at windriver.com> wrote:
>>> This reverts commit 6dd28030f323d7106a02ec54ce4e249561ab0836.
>>>
>>> Prelink now works properly again. Re-enable the functionality.
>>>
>>> Signed-off-by: Mark Hatle <mark.hatle at windriver.com>
>>> ---
>>> meta/conf/local.conf.sample | 4 +---
>>> 1 file changed, 1 insertion(+), 3 deletions(-)
>>>
>>> diff --git a/meta/conf/local.conf.sample b/meta/conf/local.conf.sample
>>> index 9d1480e..3ae24ab 100644
>>> --- a/meta/conf/local.conf.sample
>>> +++ b/meta/conf/local.conf.sample
>>> @@ -128,9 +128,7 @@ EXTRA_IMAGE_FEATURES = "debug-tweaks"
>>> # - 'image-swab' to perform host system intrusion detection
>>> # NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink
>>> # NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended
>>> -# NOTE: image-prelink is currently broken due to problems with the prelinker. It is advised
>>> -# that you do NOT run the prelinker at this time.
>>> -USER_CLASSES ?= "buildstats image-mklibs"
>>> +USER_CLASSES ?= "buildstats image-mklibs image-prelink"
>>
>> With all the discussions around benefits of it recently, I think its
>> better disabled IMO,
>>
>
> I disagree. I've got rough estimate figures for prelink improvement to the system.
>
core-image-sato is one image, we do not know if all apps in world
build are prelink friendly, I have seen atleast some packages
misbehave, (net-snmp on mips32) when using applications from meta-oe
and big C++ applications internally, Debugging failures due to prelink
issues is very hard, thats why I think
making it default may not give best experience for users.
> core-image-sato w/ systemd enabled:
>
> MIPS64 - n64 - 1.5MB of ram saved
> MIPS64 - n32 - 500KB of ram saved
> MIPS32 - n32 - 300KB of ram saved
>
> ARM - 560k of ram saved
>
> PPC - 380k of ram saved
>
> IA32 - forgot to write it down, was around 500k.
>
>
> Testing also showed sysvinit saves even more memory due to COW pages then
> systemd. (I was a bit surprised by that.) My testing consisted of building a
> filesystem and booting it. Waiting for everything to 'finish' and then
> comparing the output of the 'free' command in KB.
>
>
> As for startup time savings, I don't have specific figures BUT, for a few key
> cases the load time of the executable is up to 50% faster. For instance busybox
> on the qemux86-64. Keep in mind that busybox is pretty simple and uses only a
> few libraries. The more libraries in use, the more prelink will affect load times.
>
> The busybox binary loading and then exiting (LD_BIND_NOW=1 LD_DEBUG=statistics):
>
> (not prelinked with LD_BIND_NOW defined to simulate worst case, all relocations
> needed)
>
> 566:
> 566: runtime linker statistics:
> 566: total startup time in dynamic loader: 182539970 cycles
> 566: time needed for relocation: 40894259 cycles (22.4%)
>
> 566: number of relocations: 443
> 566: number of relocations from cache: 3
> 566: number of relative relocations: 1200
> 566: time needed to load objects: 63004343 cycles (34.5%)
>
> 566:
> 566: runtime linker statistics:
> 566: final number of relocations: 445
> 566: final number of relocations from cache: 3
>
> (prelinked, same LD_BIND_NOW defined)
>
> 524:
> 524: runtime linker statistics:
> 524: total startup time in dynamic loader: 32420607 cycles
> 524: time needed for relocation: 2812608 cycles (8.6%)
> 524: number of relocations: 4
> 524: number of relocations from cache: 76
> 524: number of relative relocations: 0
> 524: time needed to load objects: 15549810 cycles (47.9%)
>
> 524:
> 524: runtime linker statistics:
> 524: final number of relocations: 6
> 524: final number of relocations from cache: 76
>
> (both of the above were run with a hot cache, multiple times until the system
> stabilized and returned results that were fairly consistent)
>
> So the executable load time dropped to 17% (32420607/182539970) of the original
> value due to being prelinked.
More information about the Openembedded-core
mailing list