Š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.
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.
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.
Gentoo, ja ...
Idemo na važnu stvar: Grafit!
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
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.