Faster rebuild with GNU gold linker

Ioi Lam ioi.lam at oracle.com
Wed Feb 20 06:35:07 UTC 2019


Hi Martin,

Thanks for the info. I didn't know that this has been discussed so 
recently. Should have checked befor I posted.

Anyway, I built the latest lld from GIT, but it's slower than gold on my 
machine. Just linking libjvm.so is 5.8s vs 3.8s.

On 2/19/19 5:23 PM, Martin Buchholz wrote:
> https://openjdk.markmail.org/thread/q3layufiyjivu42c
>
> On Tue, Feb 19, 2019 at 5:03 PM Ioi Lam <ioi.lam at oracle.com 
> <mailto:ioi.lam at oracle.com>> wrote:
>
>     For the impatient engineers ....
>
>     I did some measurement between the default GNU linker "ld" vs
>     "ld.gold".
>     I am trying to get the fastest rebuild time after I modify one cpp
>     file.
>     With gold, it's down to about 1/3 of the original time.
>
>
>     slowdebug (~220MB libjvm.so)
>
>                       recompile 1 cpp file  |  relink libjvm.so only
>     ld:                   33 s                   25 s
>     gold 1 thread:        16 s                    9 s
>     gold 8 threads:       13 s                    6 s
>
>
>     fastdebug (~360MB libjvm.so)
>
>
>                       recompile 1 cpp file  |  relink libjvm.so only
>     ld:                   35 s                    25 s
>     gold 1 thread:        18 s                    10 s
>     gold 8 threads:       15 s                     6 s
>
>
>     Question: do we want to add built-in support for gold into the JDK
>     makefiles?
>
>
>     Notes:
>
>     To choose gold, run configure with something like:
>
>          --with-extra-ldflags='-fuse-ld=gold
>     -Wl,--threads,--thread-count,8'
>
>     I essentially do a "make hotspot" and then move the libjvm.so into
>     a JDK
>     image, instead of doing a full JDK image build.
>
>     "make hotspot" makes a copy of libjvm.so (from
>     support/modules_libs/java.base/server/ to jdk/lib/server/). I
>     hacked the
>     Makefile to make a hard link instead to avoid the unnecessary I/O.
>
>     libjvm.so is built with --with-native-debug-symbols=internal to avoid
>     the expensive invocations of objcopy and strip.
>
>
>     My environment:
>
>     I am using gcc7.3.0 on Ubuntu 16.04.5 on a 5 year old Dell Precision
>     T7600 with dual socket Xeon E5-2665 @ 2.40GHz, 64GB RAM, Samsung
>     840 PRO
>     SSD. I suspect gold can run even faster, but my slow SSD is
>     holding it back.
>
>     ld version   = GNU ld (GNU Binutils) 2.30
>     gold version = GNU gold (GNU Binutils for Ubuntu 2.26.1) 1.11
>
>     (These are just the versions available to me on my machine, not
>     necessarily the best)
>



More information about the build-dev mailing list