LTO: hvad det er, og hvordan man bruger det på Gentoo

Hvad er LTO?

LTO er forkortelsen for Optimering af linktid. Det er en operation, hvor compileren forsinker optimeringerne, når den sammenkæder kildefilerne, så den kan se alle de filer, der udgør en enkelt eksekverbar fil, som en enkelt fil og dermed anvende optimeringer mere effektivt.

For mere information: wiki af GCC.

For at se fordelene og ulemperne ved LTO: Benchmarks for Phoronix

Ting at huske på

  • Det er ustabilt, det kan give problemer i nogle pakker.
  • Nogle pakker vil ikke kunne kompilere (mere om, hvordan du løser dette senere).
  • Det anbefales at bruge linkeren Guld.
  • Brug altid den nyeste version af GCC.

Guld, ud over at understøtte avancerede funktioner, der gør den mere attraktiv, når den bruges LTO, det er hurtigere end gnu ld, især når det kommer til store programmer, hvor det kan blive 5 gange hurtigere. For at bruge det skal du køre:

binutils-config --linker ld.gold


Brug af LTO: anbefalet metode

I stedet for at aktivere LTO globalt (hvilket kan give problemer) er det bedre at aktivere det i de pakker, vi ønsker. På denne måde er det kun de pakker, du ønsker, at de skal have gavn af LTO er kompileret med denne optimering, eller som undgår langsommere kompileringstider i programmer, der ikke har gavn af det. Dette kan opnås på følgende måde:

I / etc / portage / env-biblioteket opretter vi filen LTO.konf og vi tilføjer følgende linjer:

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.

Så for at bruge LTO i en pakke skal vi kun indsætte dens navn (det fulde navn, www-client/firefox, i stedet for firefox) i filen pakke.envsammen med LTO.konf til højre for dig. Nedenfor er et eksempel:

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

Nu skal vi bare bygge de pakker, vi vil have dem til at bruge LTO.


Brug af LTO globalt (anbefales ikke)

I stedet for at ansøge LTO pakke for pakke, kan vi også anvende det globalt (hvilket er det, jeg bruger). For at anvende det er de trin, der skal følges:

Vi redigerer filen /etc/portage/make.conf og tilføjer følgende (de er de samme linjer i filen 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.

Til gengæld opretter vi filen /etc/portage/env/no-LTO.conf og tilføjer følgende linjer:

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

Og i filen pakke.env vi lægger pakkerne, hvis kompilering mislykkes med LTO. Han her min pakke.env (bemærk, at jeg bruger nolto.conf i stedet for no-LTO.konf).

Vi skal også tilføje LTO til BRUG variabel af make.conf, dette er nødvendigt, fordi udviklerne af Gentoo de tilføjer (langsomt) valgfri patches til brugen af ​​denne optimering i nogle pakker.

Når dette er gjort, lad os fortsætte med at omkompilere alle systempakkerne:

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

Ved at bruge –keep-going fortæller vi det Portage at ignorere fejl, mens &> omdiriger outputtet af alle fejl til en fil kaldet fejl, brug denne fil til at se hvilke pakker der ikke kan kompileres og føj dem til listen over pakke.env.

&> vil fratage os alt output, hvis vi ønsker at se outputtet af processen, skal vi bruge (som root) denne kommando:

tail -f /var/log/emerge.log

Og det er det, jeg håber ikke jeg har efterladt nogen tvivl, hvis det er tilfældet vil jeg muntre mig op og skrive en artikel om det. Openmp og / eller Graphite.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   MSX sagde han

    Gentoo, meh ...
    Lad os gå til det vigtige: Grafit!

    1.    x11tete11x sagde han

      Den dumme og sensuelle grafit xD, den subnormale ting, der sprænger dit xD-system, husker jeg, at sidste gang jeg brugte det, var det nok at lave en til det itererer 50 gange ved at gøre "notify-send KDE <3", så i iteration nummer 50 , miljøet vil briste til helvede hahahahaha, ja, jeg skulle til farts xD

    2.    roader sagde han

      Jeg sagde allerede, at jeg stadig blev opmuntret og lavet en af ​​Graphite. Men alligevel fungerer grafit (og enhver anden optimering) bedst med LTO. I modsætning til LTO har også Graphite og OpenMP et problem. Ikke alle programmer drager fordel af det, og i dem, der ikke drager fordel af det, falder ydeevnen, så i dette tilfælde er det bedre at kun bruge det til et par pakker.