Co je LTO?
LTO je zkratka pro Optimalizace času propojení. Jedná se o operaci, při které kompilátor zpožďuje optimalizace v okamžiku propojení zdrojových souborů, což vám umožní zobrazit všechny soubory, které tvoří jeden spustitelný soubor jako jeden soubor, a tímto způsobem optimalizace použít efektivnějším způsobem.
Chcete-li vidět výhody a nevýhody LTO: Srovnávací hodnoty Phoronix
Je třeba mít na paměti
- Je nestabilní, v některých balíčcích může způsobit problémy.
- Některé balíčky se nepodaří zkompilovat (další informace o tom, jak to opravit později).
- Doporučuje se použít linker Gold.
- Spojené státy americké vždy nejnovější verze GCC.
Gold, kromě podpory pokročilých funkcí, díky nimž je používání atraktivnější LTO, je to rychlejší než gnu ld, zvláště pokud jde o velké programy, kde se mohou stát 5krát rychlejší. Chcete-li jej použít, spusťte:
binutils-config --linker ld.gold
Použití LTO: doporučená metoda
Místo aktivace LTO globálně (což může způsobit problémy) je lepší jej aktivovat v balíčcích, které chceme. Tímto způsobem pouze balíčky, ze kterých chcete těžit LTO jsou kompilovány s touto optimalizací, nebo která se vyhne pomalejším časům kompilace v programech, které z toho nemají prospěch. Toho lze dosáhnout následujícím způsobem:
V adresáři / etc / portage / env vytvoříme soubor LTO.conf a přidáme následující řádky:
CFLAGS="${CFLAGS} -flto=5" #pon en -flto los hilos de tu CPU + 1
CXXFLAGS="${CXXFLAGS} -flto=5" #igual que arriba
LDFLAGS="${LDFLAGS} -fuse-linker-plugin" #solo si usas Gold, es mejor.
Takže použít LTO v balíčku musíme do souboru vložit jeho jméno (celé jméno, www-client / firefox, místo firefox) balíček.env, společně s LTO.conf po vaší pravici. Níže je uveden příklad:
app-emulation/wine LTO.conf
www-client/firefox LTO.conf
sys-devel/gcc LTO.conf
kde-base/kdelibs LTO.conf
Nyní musíme pouze zkompilovat balíčky, které chceme, aby používali LTO.
Globální používání LTO (nedoporučuje se)
Místo podání žádosti LTO balíček po balíčku, můžeme jej také použít globálně (což je to, co používám). Chcete-li jej použít, postupujte následovně:
Upravíme soubor /etc/portage/make.conf a přidáme následující (jsou to stejné řádky souboru LTO.conf):
CFLAGS="${CFLAGS} -flto=5" #pon en -flto los hilos de tu CPU + 1
CXXFLAGS="${CXXFLAGS} -flto=5" #igual que arriba
LDFLAGS="${LDFLAGS} -fuse-linker-plugin" #solo si usas Gold, es mejor.
Na druhé straně vytvoříme soubor /etc/portage/env/no-LTO.conf a přidáme následující řádky:
CFLAGS="${CFLAGS} -fno-lto -fno-use-linker-plugin"
CXXFLAGS="${CXXFLAGS} -fno-lto -fno-use-linker-plugin"
LDFLAGS="${LDFLAGS} -fno-lto -fno-use-linker-plugin"
A ve složce balíček.env dáme balíčky, jejichž kompilace selže LTO, On tady můj balíček.env (Všimněte si, že používám nolto.conf místo non-LTO.conf).
Musíme také přidat LTO proměnná USE z make.conf, to je nutné, protože vývojáři Gentoo v některých balíčcích (pomalu) přidávají volitelné opravy pro použití této optimalizace.
Jakmile to provedete, pokračujme v překompilaci všech systémových balíčků:
emerge -e @world @system --keep-going &> errores
Používáním –keep-going to říkáme Dopravné ignorovat chyby &> přesměrovat výstup všech chyb do souboru zvaného chyby, pomocí tohoto souboru zjistit, které balíčky se nepodařilo zkompilovat, a přidat je do seznamu balíček.env.
tail -f /var/log/emerge.log
A to je vše, doufám, že jsem nenechal žádné pochybnosti, jestli to rozveselím a napíšu o tom článek Openmp a / nebo Grafit.
Gentoo, já ...
Pojďme k důležité věci: Grafit!
Ten hloupý a smyslný Graphite xD, ta podnormální věc, která praskne váš systém xD, si pamatuji, že když jsem ho použil naposledy, stačilo to udělat 50krát iterovat tím, že udělám „oznámit-poslat KDE <3“, takže v iteraci číslo 50, prostředí praskne do pekla hahahahaha, ano, šel jsem na prdy xD
Už jsem řekl, že jsem byl stále povzbuzován a udělal jsem jednu z Graphite. Ale stejně, Graphite (a jakákoli jiná optimalizace) funguje nejlépe s LTO. Na rozdíl od LTO mají Graphite a OpenMP problém. Ne všechny programy z toho mají prospěch, a u těch, které to nemají, výkon klesá, takže v tomto případě je lepší jej použít pouze pro několik balíčků.