Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Your personal non-LTO package lists
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Gentoo Chat
View previous topic :: View next topic  
Author Message
alamahant
Advocate
Advocate


Joined: 23 Mar 2019
Posts: 3879

PostPosted: Mon May 17, 2021 12:18 pm    Post subject: Your personal non-LTO package lists Reply with quote

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
View user's profile Send private message
Goverp
Advocate
Advocate


Joined: 07 Mar 2007
Posts: 2008

PostPosted: Mon May 17, 2021 12:54 pm    Post subject: Reply with quote

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
View user's profile Send private message
alamahant
Advocate
Advocate


Joined: 23 Mar 2019
Posts: 3879

PostPosted: Mon May 17, 2021 12:59 pm    Post subject: Reply with quote

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
View user's profile Send private message
alamahant
Advocate
Advocate


Joined: 23 Mar 2019
Posts: 3879

PostPosted: Mon May 17, 2021 3:08 pm    Post subject: Reply with quote

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
View user's profile Send private message
Goverp
Advocate
Advocate


Joined: 07 Mar 2007
Posts: 2008

PostPosted: Mon May 17, 2021 3:45 pm    Post subject: Reply with quote

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
View user's profile Send private message
mrbassie
l33t
l33t


Joined: 31 May 2013
Posts: 772
Location: over here

PostPosted: Tue May 18, 2021 1:58 pm    Post subject: Reply with quote

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
View user's profile Send private message
alamahant
Advocate
Advocate


Joined: 23 Mar 2019
Posts: 3879

PostPosted: Thu May 20, 2021 6:29 pm    Post subject: Reply with quote

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
View user's profile Send private message
Perfect Gentleman
Veteran
Veteran


Joined: 18 May 2014
Posts: 1249

PostPosted: Fri May 21, 2021 4:05 am    Post subject: Reply with quote

I can tell for sure that generally Clang+ThinLTO produces smaller binaries that GCC+LTO.
Back to top
View user's profile Send private message
shoober420
Apprentice
Apprentice


Joined: 22 May 2017
Posts: 223

PostPosted: Sun Jun 13, 2021 9:46 pm    Post subject: Reply with quote

Adding upon mrbassie‘s list, these are a list of packages i’ve personally needed to disable LTO, or adjust other flags for.

https://github.com/shoober420/rootscripts/blob/main/etc/portage/package.env

https://github.com/shoober420/rootscripts/tree/main/etc/portage/env

Just as mrbassie doesn’t use the LTOoverlay, this method does not require the LTOoverlay either, which I disabled.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Gentoo Chat All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum