LTO: što je to i kako ga koristiti na Gentoo-u

Šta je LTO?

LTO je akronim za Link Optimization. To je operacija u kojoj kompajler odgađa optimizacije u trenutku povezivanja izvornih datoteka, omogućavajući vam da vidite sve datoteke koje čine jednu izvršnu datoteku kao jednu datoteku i na taj način primijenite optimizacije na učinkovitiji način.

Za više informacija: wiki GCC.

Da biste vidjeli prednosti i nedostatke LTO: Mjerila Phoronix

Stvari koje treba imati na umu

  • Nestabilan je, može uzrokovati probleme u nekim paketima.
  • Neki paketi neće uspjeti kompajlirati (više o tome kako to popraviti kasnije).
  • Preporučljivo je koristiti linker zlato.
  • SAD siempre najnovija verzija GCC.

zlato, uz podršku naprednih funkcija koje ga čine privlačnijim za upotrebu LTO, brže je od gnu ldposebno kada su u pitanju veliki programi, gdje to mogu postati 5 puta brže. Da biste ga koristili, pokrenite:

binutils-config --linker ld.gold


Korištenje LTO: preporučena metoda

Umjesto da se aktivira LTO globalno (što može uzrokovati probleme) bolje ga je aktivirati u paketima koje želimo. Na ovaj način samo paketi od kojih želite imati koristi LTO oni se kompajliraju s ovom optimizacijom ili čime se izbjegava sporije vrijeme kompilacije u programima koji od toga nemaju koristi. To se može postići na sljedeći način:

U direktoriju / etc / portage / env kreiramo datoteku LTO.conf i dodajemo sljedeće redove:

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.

Dakle, za upotrebu LTO u paketu samo moramo staviti njegovo ime (puno ime, www-client / firefox, umjesto firefox) u datoteku package.env, Sa LTO.conf s vaše desne strane. Ispod je primjer:

app-emulation/wine LTO.conf
www-client/firefox LTO.conf
sys-devel/gcc LTO.conf
kde-base/kdelibs LTO.conf

Sada samo moramo kompajlirati pakete koje želimo da koriste LTO.


Korištenje LTO-a globalno (ne preporučuje se)

Umjesto prijave LTO paket po paket, možemo ga primijeniti i globalno (što ja koristim). Da biste ga primijenili, slijede koraci:

Uređujemo datoteku /etc/portage/make.conf i dodajemo sljedeće (isti su redovi datoteke 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.

Zauzvrat kreiramo datoteku /etc/portage/env/no-LTO.conf i dodamo sljedeće redove:

CFLAGS="${CFLAGS} -fno-lto -fno-use-linker-plugin"
CXXFLAGS="${CXXFLAGS} -fno-lto -fno-use-linker-plugin"
LDFLAGS="${LDFLAGS} -fno-lto -fno-use-linker-plugin"

I u dosijeu package.env stavit ćemo pakete čija kompilacija ne uspije LTO. On ovdje moj package.env (napomena koju koristim nolto.conf umesto non-LTO.conf).

Moramo takođe dodati LTO za USE varijabla od make.conf, ovo je neophodno jer programeri Gentoo oni (polako) dodaju opcionalne zakrpe za upotrebu ove optimizacije u nekim paketima.

Jednom kada je to gotovo, nastavimo s ponovnim prevođenjem svih sistemskih paketa:

emerge -e @world @system --keep-going &> errores

Koristeći –neep-going, kažemo Portage zanemariti greške, dok &> preusmjerite izlaz svih grešaka u datoteku koja se naziva greške, koristite ovu datoteku da vidite koji se paketi ne uspiju kompajlirati i dodajte ih na listu package.env.

&> Će nas lišiti svih rezultata, ako želimo vidjeti izlaz procesa, moramo koristiti (kao root) ovu naredbu:

tail -f /var/log/emerge.log

I to je sve, nadam se da nisam ostavio nikakve sumnje, ako ću o tome razveseliti i napisati članak Openmp i / ili Grafit.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   MSX rekao je

    Gentoo, ja ...
    Idemo na važnu stvar: Grafit!

    1.    x11tete11x rekao je

      Glupi i senzualni Graphite xD, ta nenormalna stvar koja puca na vašem xD sistemu, sjećam se da je zadnji put kada sam ga koristio, bilo dovoljno za to ponoviti 50 puta radeći "notify-send KDE <3" tako da u iteraciji broj 50, okoliš će puknuti dovraga hahahahaha, da, išao sam na ponovni prd xD

    2.    roader rekao je

      Već sam rekao da sam i dalje ohrabren i napravio jedan od Graphita. Ali u svakom slučaju, Graphite (i bilo koja druga optimizacija) najbolje funkcionira s LTO-om. Takođe, za razliku od LTO, Graphite i OpenMP imaju problema. Nemaju svi programi koristi od toga, a u onima koji nemaju koristi, performanse se smanjuju, pa je u ovom slučaju bolje koristiti ga samo za nekoliko paketa.