Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Apr 2012 20:01:08 +0100
From:      Chris Rees <utisoft@gmail.com>
To:        Ruslan Ermilov <ru@freebsd.org>
Cc:        Kostik Belousov <kostikbel@gmail.com>, toolchain@freebsd.org, current@freebsd.org
Subject:   Re: [RFC] Un-staticise the toolchain
Message-ID:  <CADLo838sdUT2e%2B7j8vCyOmDithLsh3kwDd_z04dWaPoiMphPDQ@mail.gmail.com>
In-Reply-To: <20120426134140.GF14350@lo0.su>
References:  <20120426093548.GR2358@deviant.kiev.zoral.com.ua> <20120426134140.GF14350@lo0.su>

next in thread | previous in thread | raw e-mail | index | archive | help
On Apr 26, 2012 2:42 PM, "Ruslan Ermilov" <ru@freebsd.org> wrote:
>
> On Thu, Apr 26, 2012 at 12:35:48PM +0300, Konstantin Belousov wrote:
> > I think it is time to stop building the toolchain static. I was told
that
> > original reasoning for static linking was the fear of loosing the
ability
> > to recompile if some problem appears with rtld and any required dynamic
> > library. Apparently, current dependencies are much more spread, e.g.
/bin/sh
> > is dynamically linked, and statically linked make does not solve
anything.
>
> ------------------------------------------------------------------------
> r76801 | sobomax | 2001-05-18 13:05:56 +0400 (Fri, 18 May 2001) | 6 lines
>
> By default build make(1) as a static binary. It costs only 100k of
additional
> disk space, buf provides measureable speed increase for make-intensive
> operations, such as pkg_version(1), `make world' and so on.
>
> MFC after:      1 week
>
> ------------------------------------------------------------------------
>
> Have things changed enough that the above is not true anymore?
Well, the most make(1)-intensive test I can think of is make index, so some
results from a quick test:

hydra# uname -a
FreeBSD hydra.bayofrum.net 9.0-RELEASE FreeBSD 9.0-RELEASE #7: Sun Apr 22
21:02:48 BST 2012     root@hydra.bayofrum.net:/usr/obj/usr/src/sys/HYDRA
amd64

hydra# cd /usr/src/usr.bin/make && make NO_SHARED=yes && cp make
~/bin/make-static >& /dev/null

hydra# rm make && make NO_SHARED=no && cp make ~/bin/make-dynamic >&
/dev/null

hydra# file ~/bin/make-*
/home/chris/bin/make-dynamic: ELF 64-bit LSB executable, x86-64, version 1
(FreeBSD), dynamically linked (uses shared libs), for FreeBSD 9.0 (900044),
not stripped
/home/chris/bin/make-static:  ELF 64-bit LSB executable, x86-64, version 1
(FreeBSD), statically linked, for FreeBSD 9.0 (900044), not stripped

hydra# cd /usr/ports && time make MAKE=~crees/bin/make-static index

Generating INDEX-9 - please wait.. Done.
729.770u 120.841s 7:45.10 182.8%        920+2676k 5251+116484io 7750pf+0w

hydra# time make MAKE=~crees/bin/make-dynamic index

Generating INDEX-9 - please wait.. Done.
771.320u 133.540s 8:07.83 185.4%        609+2918k 474+116484io 570pf+0w

We have a 10% slowdown (or 11% speedup, depending on your figures) when
using a dynamically loaded make.

Chris



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CADLo838sdUT2e%2B7j8vCyOmDithLsh3kwDd_z04dWaPoiMphPDQ>