LTO: co to je a jak to používat na Gentoo

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.

Pro více informací: wiki z GCC.

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.

&> Nás zbaví veškerého výstupu, pokud chceme vidět výstup procesu, musíme použít (jako root) tento příkaz:

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.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   MSX řekl

    Gentoo, já ...
    Pojďme k důležité věci: Grafit!

    1.    x11tete11x řekl

      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

    2.    cestář řekl

      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ů.