View previous topic :: View next topic |
Author |
Message |
alamahant Advocate
Joined: 23 Mar 2019 Posts: 3879
|
Posted: Mon May 17, 2021 12:18 pm Post subject: Your personal non-LTO package lists |
|
|
Hi experienced compiler friends.
I am trying to create a list of packages that either do not compile properly or have sub optimal performance if built with LTO flags.
Would you care to share some of them with the community?
Also plz feel free to add any other relevant info if you wish ,like for example which flags do you prefer etc..........
Thanks a lot Guys... _________________
|
|
Back to top |
|
|
Goverp Advocate
Joined: 07 Mar 2007 Posts: 2008
|
Posted: Mon May 17, 2021 12:54 pm Post subject: |
|
|
Not sure whether it's significant, but compiling kernel 5.12.x with Clang and LTO-thin produces something about the same size as GCC non_LTO; with LTO-full, it gets bigger! That's not the experience recorded on the Internet, where people mostly seem to think the benefits are a reduction in kernel size.
You can see the LTO step in the kernel compilation listing, and sit there waiting ... With LTO-thin, on my box it was perhaps less than a minute (I didn't time it); LTO-full was several minutes.
I've no idea if there's any performance gain - if there is, it doesn't seem noticeable to the end-user. It's not damaged stability.
As an aside, all my modules seem to get LTO'd, except one that's completely external for my RTL WiFi card (still not in the kernel), which I couldn't get compiled with Clang and LTO., so it's still GCC'd. No problem using it though. _________________ Greybeard |
|
Back to top |
|
|
alamahant Advocate
Joined: 23 Mar 2019 Posts: 3879
|
Posted: Mon May 17, 2021 12:59 pm Post subject: |
|
|
Goverp
Thanks for the insights
So basically if one wants to venture in LTO land it is better to use clang+lto-thin than GCC?
Also this widely broadcasted benefit of smaller binaries with LTO I havent yet seen.
Either they are the same size or slightly larger than non-LTO packages.
I used
Code: |
-flto=auto -fuse-linker-plugin
|
_________________
|
|
Back to top |
|
|
alamahant Advocate
Joined: 23 Mar 2019 Posts: 3879
|
Posted: Mon May 17, 2021 3:08 pm Post subject: |
|
|
I did some research in lto-overlay and i found these
Code: |
PACKAGES THAT CAN NOT LTO BUILD UNLESS YOU APPLY SOME WORKAROUND
app-admin/keepassxc
app-emulation/dosemu
app-emulation/libguestfs
app-emulation/libpod
app-emulation/qemu
app-emulation/virtualbox-extpack-oracle
app-emulation/virtualbox
app-emulation/wine
app-office/gnucash
app-office/libreoffice
app-office/scribus
<app-text/mupdf-1.12.0
app-text/texlive-core
app-text/yodl
cross-arm-none-eabi/newlib
cross-i686-w64-mingw32/mingw64-runtime
cross-x86_64-w64-mingw32/mingw64-runtime
dev-db/firebird
dev-db/mariadb
dev-db/mysql-connector-c
games-fps/gzdoom
games-fps/zandronum
dev-java/icedtea
<dev-java/openjdk-14
dev-lang/mono
dev-lang/perl
>=dev-lang/php-7.2.0
dev-lang/rust
dev-lang/spidermonkey
dev-libs/elfutils
dev-libs/intel-neo
dev-libs/libbpf
dev-libs/libsigsegv
dev-libs/weston
dev-python/libvirt-python
dev-qt/qtwebkit
dev-scheme/guile
dev-scheme/racket
dev-tex/chktex
dev-util/perf
dev-util/radare2
dev-util/valgrind
dev-vcs/cvs
games-action/extreme-tuxracer
games-emulation/mupen64plus-libretro
games-emulation/parallel-n64-libretro
gnome-base/gnome-keyring
gnustep-base/gnustep-make
kde-apps/kdenlive
kde-frameworks/kjs
mail-filter/procmail
media-gfx/shotwell
media-libs/alsa-lib
media-libs/mlt
media-sound/pulseaudio
media-video/ffmpeg
media-video/mplayer
net-libs/webkit-gtk:3
net-libs/webkit-gtk:4
net-misc/autossh
net-misc/dhcp
net-misc/lksctp-tools
net-misc/nextcloud-client
net-misc/nx
net-news/newsboat
net-p2p/cpuminer-opt
net-p2p/retroshare
net-wireless/aircrack-ng
sci-electronics/kicad
sci-libs/arrayfire
sci-libs/scipy
sys-apps/acl
sys-apps/fakechroot
sys-apps/fwupd
sys-apps/man-db
sys-apps/nix
sys-cluster/ceph
sys-cluster/glusterfs
sys-devel/clang
sys-devel/gdb
sys-devel/llvm
sys-fabric/libibverbs
sys-fs/fuse-common
sys-fs/fuse
sys-libs/glibc
sys-libs/libcxxabi
sys-libs/libomp
sys-libs/libselinux
sys-libs/libsemanage
sys-libs/libsepol
sys-libs/musl
sys-process/criu
sys-process/numactl
www-apps/hugo
www-misc/shellinabox
x11-base/xorg-server
x11-drivers/xf86-video-intel
|
and
Code: |
PACKAGES THAT BUILD BUT PRODUCE ERRORS THUS NOT RECOMMENDED
app-cdr/cdrtools
app-crypt/gcr
dev-lang/ruby
dev-libs/folks
>=dev-libs/gjs-1.66.1
dev-libs/libaio
dev-libs/libbsd
dev-libs/libpcre
dev-libs/protobuf
dev-libs/rocr-runtime
dev-qt/qtscript
dev-scheme/gambit
media-libs/mesa
media-sound/jack2
net-misc/networkmanager
net-misc/openssh
net-news/rssguard
net-proxy/privoxy
sci-libs/tensorflow
sci-misc/boinc
sys-apps/apparmor
>=sys-apps/attr-2.4.48
sys-apps/sandbox
sys-fs/cryfs
sys-libs/libapparmor
sys-libs/libxcrypt
|
Thanks a lot to the people @lto-overlay.
I think I will apply some mild LTO on my own without relying on external overlays etc and see how it goes..... _________________
|
|
Back to top |
|
|
Goverp Advocate
Joined: 07 Mar 2007 Posts: 2008
|
Posted: Mon May 17, 2021 3:45 pm Post subject: |
|
|
alamahant wrote: | ...So basically if one wants to venture in LTO land it is better to use clang+lto-thin than GCC? ... |
Somewhere on the web there's a paper by the LLVM developers that basically says LTO-thin is nearly as good as LTO-full. There's supposed to be an advantage over GCC, but I get the impression it's small for most cases, and the bigger gains are from PGO, a whole other ball-game.
To LTO the kernel, you have to set some environment variables to enable Clang, LLVM and the LLVM assembler. Then, magically, some LTO options appear in the kernel config. Dead easy to enable it. You can pull the details from my wiki entry on non-root kernel compilation. _________________ Greybeard |
|
Back to top |
|
|
mrbassie l33t
Joined: 31 May 2013 Posts: 772 Location: over here
|
Posted: Tue May 18, 2021 1:58 pm Post subject: |
|
|
Code: | app-emulation/wine-vanilla
app-office/libreoffice
dev-lang/rust
dev-libs/libsigsegv
games-engines/scummvm
#media-sound/pulseaudio
media-video/ffmpeg
sys-apps/sandbox
sys-devel/clang
sys-devel/gettext
sys-devel/llvm
sys-libs/glibc
sys-libs/libomp
sys-fs/fuse
sys-power/thermald |
That's all I have from trial and error, I don't use the overlay. |
|
Back to top |
|
|
alamahant Advocate
Joined: 23 Mar 2019 Posts: 3879
|
Posted: Thu May 20, 2021 6:29 pm Post subject: |
|
|
Goverp
Thanks for the link.
I noticed that both gcc flto=n and clang flto=thin produce best results in small binaries.
For example
coreutils
made with LTO has SIGNIFICANTLY smaller binaries whereas
other packages with large binaries like qemu for example is a disaster made with LTO.The lto binaries are MUCH MUCH larger.Not consistently but there seems to be a pattern.
So i feel LTO should be used in a limited way and not universally.
I really like your link about kernel building.
The way i like to make my kernels is to emerge
gentoo-sources
throw in an Arch .config and run make etc.
Do you think I can use your script in this way.
I think kernels are good candidates for LTO since they have many many small binaries...... _________________
|
|
Back to top |
|
|
Perfect Gentleman Veteran
Joined: 18 May 2014 Posts: 1249
|
Posted: Fri May 21, 2021 4:05 am Post subject: |
|
|
I can tell for sure that generally Clang+ThinLTO produces smaller binaries that GCC+LTO. |
|
Back to top |
|
|
shoober420 Apprentice
Joined: 22 May 2017 Posts: 223
|
|
Back to top |
|
|
|