[systemd-devel] Is LTO worth it?

Michael Biebl mbiebl at gmail.com
Mon Jan 11 14:34:45 UTC 2021


Hi,

we've been using LTO in the Debian build for as long as I can
remember, but I begin to question whether that is a good idea.
On Debian sid (gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU
Binutils for Debian) 2.35.1),
an LTO build almost takes twice as long as a no-LTO build.
I also debdiffed the produced binary and LTO seems to produce bigger
binaries as well.
Most noticably (sizes in kB)
udev  9287 vs 8971
systemd 14755 vs 15998

LTO manages to strip some library dependencies here and there, but
that's about it.
Attached is a full debdiff output
$ debdiff no-lto/systemd_247.2-4_amd64.changes
lto/systemd_247.2-4_amd64.changes | colordiff
File lists identical (after any substitutions)

Control files of package libnss-myhostname: lines which differ (wdiff format)
-----------------------------------------------------------------------------
Depends: libc6 (>= [-2.30), libselinux1 (>= 3.1~)-] {+2.30)+}
Installed-Size: [-265-] {+233+}

Control files of package libnss-mymachines: lines which differ (wdiff format)
-----------------------------------------------------------------------------
Depends: libc6 (>= 2.30), [-libcap2 (>= 1:2.24-9~), libselinux1 (>=
3.1~),-] systemd-container (= 247.2-4)
Installed-Size: [-499-] {+419+}

Control files of package libnss-resolve: lines which differ (wdiff format)
--------------------------------------------------------------------------
Depends: libc6 (>= 2.30), [-libselinux1 (>= 3.1~),-] systemd (= 247.2-4)
Installed-Size: [-277-] {+237+}

Control files of package libnss-systemd: lines which differ (wdiff format)
--------------------------------------------------------------------------
Depends: libc6 (>= 2.30), [-libcrypt1 (>= 1:4.1.0), libselinux1 (>=
3.1~),-] systemd (= 247.2-4)
Installed-Size: [-417-] {+361+}

Control files of package libpam-systemd: lines which differ (wdiff format)
--------------------------------------------------------------------------
Depends: libc6 (>= 2.30), [-libcap2 (>= 1:2.24-9~), libcrypt1 (>=
1:4.1.0),-] libpam0g (>= 0.99.7.1), [-libselinux1 (>= 3.1~),-] systemd
(= 247.2-4), libpam-runtime (>= 1.0.1-6), dbus, systemd-sysv
Installed-Size: [-673-] {+573+}

No differences were encountered between the control files of package
libsystemd-dev

Control files of package libsystemd0: lines which differ (wdiff format)
-----------------------------------------------------------------------
Installed-Size: [-963-] {+863+}
Pre-Depends: libc6 (>= 2.30), [-libcap2 (>= 1:2.24-9~),-] libgcrypt20
(>= 1.8.0), liblz4-1 (>= 0.0~r122), liblzma5 (>= 5.1.1alpha+20120614),
[-libselinux1 (>= 3.1~),-] libzstd1 (>= 1.4.0)

No differences were encountered between the control files of package libudev-dev

Control files of package libudev1: lines which differ (wdiff format)
--------------------------------------------------------------------
Depends: libc6 (>= [-2.30), libselinux1 (>= 3.1~)-] {+2.30)+}
Installed-Size: [-332-] {+280+}

Control files of package libudev1-udeb: lines which differ (wdiff format)
-------------------------------------------------------------------------
Installed-Size: [-213-] {+161+}

Control files of package systemd: lines which differ (wdiff format)
-------------------------------------------------------------------
Depends: {+libacl1 (>= 2.2.23),+} libapparmor1 (>= 2.13), libaudit1
(>= 1:2.2.1), {+libcap2 (>= 1:2.24-9~),+} libcrypt1 (>= 1:4.4.0),
libcryptsetup12 (>= 2:2.3), libgnutls30 (>= 3.7.0), libgpg-error0 (>=
1.14), libip4tc2 (>= 1.8.3), libkmod2 (>= 5~), liblz4-1 (>= 0.0~r130),
{+libmount1 (>= 2.30),+} libpam0g (>= 0.99.7.1), libseccomp2 (>=
2.4.1), libsystemd0 (= 247.2-4), systemd-timesyncd | time-daemon,
util-linux (>= 2.27.1), mount (>= 2.26), adduser
Installed-Size: [-14755-] {+15998+}
Pre-Depends: [-libacl1 (>= 2.2.23),-] libblkid1 (>= 2.24), libc6 (>=
2.30), [-libcap2 (>= 1:2.24-9~),-] libgcrypt20 (>= 1.8.0), liblz4-1
(>= 0.0~r122), liblzma5 (>= 5.1.1alpha+20120614), [-libmount1 (>=
2.30),-] libselinux1 (>= 3.1~), libzstd1 (>= 1.4.0)

Control files of package systemd-container: lines which differ (wdiff format)
-----------------------------------------------------------------------------
Installed-Size: [-1230-] {+1214+}

No differences were encountered between the control files of package
systemd-coredump

Control files of package systemd-journal-remote: lines which differ
(wdiff format)
----------------------------------------------------------------------------------
Installed-Size: [-333-] {+329+}

No differences were encountered between the control files of package
systemd-sysv

Control files of package systemd-tests: lines which differ (wdiff format)
-------------------------------------------------------------------------
Depends: libacl1 (>= 2.2.23), libapparmor1 (>= 2.13), libaudit1 (>=
1:2.2.1), libblkid1 (>= 2.24), libc6 (>= 2.30), libcap2 (>=
1:2.24-9~), libdbus-1-3 (>= 1.9.14), libgcrypt20 (>= 1.8.0),
libglib2.0-0 (>= 2.26.0), libgpg-error0 (>= 1.14), {+libip4tc2 (>=
1.8.3),+} libkmod2 (>= 5~), liblz4-1 (>= 0.0~r130), libmount1 (>=
2.30), libpam0g (>= 0.99.7.1), libseccomp2 (>= 2.4.1), libselinux1 (>=
3.1~), libsystemd0 (= 247.2-4), libudev1 (>= 247), systemd (=
247.2-4), zlib1g (>= 1:1.1.4), python3
Installed-Size: [-30942-] {+33353+}

No differences were encountered between the control files of package
systemd-timesyncd

Control files of package udev: lines which differ (wdiff format)
----------------------------------------------------------------
Depends: libacl1 (>= 2.2.23), libblkid1 (>= 2.24), libc6 (>= 2.30),
[-libcap2 (>= 1:2.24-9~),-] libkmod2 (>= 5~), libselinux1 (>= 3.1~),
adduser, dpkg (>= 1.19.3) | systemd-sysv, libudev1 (= 247.2-4),
util-linux (>= 2.27.1)
Installed-Size: [-9287-] {+8971+}

Control files of package udev-udeb: lines which differ (wdiff format)
---------------------------------------------------------------------
Depends: libblkid1-udeb (>= 2.31), libc6-udeb (>= 2.31),
[-libcap2-udeb (>= 1:2.33),-] libkmod2-udeb (>= 28), util-linux-udeb
Installed-Size: [-1460-] {+1264+}


More information about the systemd-devel mailing list