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

Što je LTO?

LTO je kratica za Povezivanje vremena optimizacija. To je operacija u kojoj kompajler odgađa optimizacije u trenutku povezivanja izvornih datoteka, omogućujuć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 se paketi neće uspjeti sastaviti (više o tome kako to popraviti kasnije).
  • Preporuča se korištenje povezivača Zlato.
  • Koristiti uvijek najnovija verzija GCC.

Zlato, uz podršku naprednim značajkama koje ga čine privlačnijim za upotrebu LTO, brže je od gnu ld, posebno 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-a: preporučena metoda

Umjesto da se aktivira LTO globalno (što može stvarati probleme) bolje ga je aktivirati u paketima koje želimo. Na ovaj način samo paketi od kojih želite imati koristi LTO oni su sastavljeni s ovom optimizacijom ili koji izbjegavaju sporija vremena 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.konf i dodajemo sljedeće retke:

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 dodati njegovo ime (puno ime, www-client / firefox, umjesto firefox) u datoteku paket.envzajedno sa LTO.konf 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 sastaviti 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.konf):

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 retke:

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 spisu paket.env stavit ćemo pakete čija kompilacija ne uspije LTO. On ovdje moja paket.env (napomena koju koristim nolto.konf umjesto da ne-LTO.conf).

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

Nakon što je to učinjeno, krenimo s ponovnim prevođenjem svih sistemskih paketa:

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

Koristeći –neep-going, kažemo prevoženje zanemariti pogreške, dok &> preusmjerite izlaz svih grešaka u datoteku koja se naziva greške, upotrijebite ovu datoteku da biste vidjeli koji se paketi ne uspiju sastaviti i dodajte ih na popis paket.env.

&> Lišit će nas 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 svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  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 obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   MSX dijo

    Gentoo, ja ...
    Krenimo na važno: Grafit!

    1.    x11tete11x dijo

      Glupi i senzualni Graphite xD, ta nenormalna stvar koja puca u vašem xD sustavu, sjećam se da je zadnji put kad 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.    cestar dijo

      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đer, za razliku od LTO, Graphite i OpenMP imaju problema. Nemaju svi programi koristi od toga, a onima koji nemaju koristi, performanse se smanjuju, pa je u ovom slučaju bolje koristiti ga samo za nekoliko paketa.