Dimitry Andric <dim_at_FreeBSD.org> wrote on
Date: Tue, 23 Dec 2025 21:08:31 UTC :

> On 23 Dec 2025, at 22:04, Dimitry Andric <[email protected]> wrote:
> > 
> > The branch main has been updated by dim:
> > 
> > URL: 
> > https://cgit.FreeBSD.org/src/commit/?id=8d5a11cd0137d3ad70f6b06e063ea91a776d510a
> > 
> > commit 8d5a11cd0137d3ad70f6b06e063ea91a776d510a
> > Author: Dimitry Andric <[email protected]>
> > AuthorDate: 2025-06-18 10:06:25 +0000
> > Commit: Dimitry Andric <[email protected]>
> > CommitDate: 2025-12-23 21:01:40 +0000
> > 
> > src.conf: Add WITH_LLVM_LINK_STATIC_LIBRARIES build knob
> > 
> > In commit 2e47f35be5dc libllvm, libclang and liblldb were converted into
> > private shared libraries. This allowed clang, lld, lldb, and other llvm
> > tools to be linked against these shared libraries, which makes them
> > smaller and avoids duplication.
> > 
> > However, this also comes at the cost of some performance, since the
> > dynamic libraries are quite large, and contain lots of long symbols
> > (mangled C++ identifiers).
> > 
> > Add a WITH_LLVM_LINK_STATIC_LIBRARIES build knob that can be used to go
> > back to the previous behavior: libllvm, libclang and liblldb are built
> > as internal static libraries, i.e. only available during buildworld, and
> > fully linked into the various executables such as clang, lld, etc.
> > 
> > PR: 287447
> > Reviewed by: emaste
> > MFC after: 1 week
> > Differential Revision: https://reviews.freebsd.org/D50956
> 
> NOTE: toggling this option requires a full clean build, at least until
> https://reviews.freebsd.org/D52011 lands.

A significant question question here (after the MFC activity:
for more than main) that is especially significant for the
ampere* port-package builder machines (slower and few of them
vs. the number of types of builds) but also for other of the
more time-taking builder machines:

Will the poudriere port-package build jails be built based
on using WITH_LLVM_LINK_STATIC_LIBRARIES ?

(The boot kernel and boot world are not the issue.)

The performance difference between 14.3-RELEASE and 14.3-STABLE
jails is large on aarch64 in my testing. (No such comparison
is available for ampere* builds: no 14.3-STABLE build history
logs exist to compare against.)

14.3-RELEASE predates the shared library change. 14.3-STABLE
currently is using the shared libraries (before being shrunk
some).

   00:09:18 14.3-RELEASE -> 00:12:19 14.3-STABLE, ratio about 1.32, for 
cmake-core-3.31.9 on the Windows Dev Kit 2023 (using all 8 cores)

(Those, of course, ares not matching contexts to how official
builds are done. But the above avoided any jemalloc 5.3.0
involvement in causing the time ratio observed. Comparison
and contrasts with 15.0-RELEASE do not avoid such. I could
build other examples.)

The best match that I have for ampere* numbers that is using
150arm64 builds and 143arm64 builds:

   38:25:51 14.3-RELEASE -> 53:33:46 15.0-RELEASE, ratio about 1.39, for 
qt6-webengine-6.9.3 on the ampere*'s
   15:24:24 14.3-RELEASE -> 21:26:14 15.0-RELEASE, ratio about 1.39, for 
llvm21-21.1.2 on the ampere*'s

15.0-RELEASE has the toolchain programs using the shared
libraries.

These sorts of figures can be explored from the official logs
that exist --but 15.0 has more differences than just use of
the shared libraries by the toolchain programs.

I'd consider time ratios of 1.3+ significant.


===
Mark Millard
marklmi at yahoo.com


Reply via email to