LTO: hva det er og hvordan du bruker det på Gentoo

Hva er LTO?

LTO er forkortelsen for Optimalisering av koblingstid. Det er en operasjon der kompilatoren forsinker optimaliseringer i øyeblikket for å koble kildefilene, slik at du kan se alle filene som utgjør en enkelt kjørbar som en enkelt fil, og på denne måten bruke optimaliseringer på en mer effektiv måte.

For mer informasjon: wiki av GCC.

For å se fordelene og ulempene ved LTO: Referanser for Phoronix

Ting å huske på

  • Det er ustabilt, det kan forårsake problemer i noen pakker.
  • Noen pakker klarer ikke å kompilere (mer om hvordan du løser dette senere).
  • Det anbefales å bruke linkeren Gull.
  • Usa alltid den siste versjonen av GCC.

Gull, i tillegg til å støtte avanserte funksjoner som gjør det mer attraktivt å bruke LTO, det er raskere enn gnu ld, spesielt når det gjelder store programmer, der det kan bli 5 ganger raskere. For å bruke den, kjør:

binutils-config --linker ld.gold


Bruke LTO: anbefalt metode

I stedet for å aktivere LTO globalt (som kan forårsake problemer) er det bedre å aktivere det i pakkene vi ønsker. På denne måten er det bare pakkene du vil dra nytte av LTO de er kompilert med denne optimaliseringen, eller som unngår langsommere kompileringstider i programmer som ikke drar nytte av det. Dette kan oppnås på følgende måte:

I katalogen / etc / portage / env oppretter vi filen LTO.konf og vi legger til 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å, å bruke LTO i en pakke, trenger vi bare å legge navnet (det fulle navnet, www-client / firefox, i stedet for firefox) i filen pakke. env, Sammen med LTO.konf til høyre for deg. Nedenfor er et eksempel:

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

Nå må vi bare kompilere pakkene vi ønsker at de skal bruke LTO.


Bruke LTO globalt (anbefales ikke)

I stedet for å søke LTO pakke for pakke kan vi også bruke den globalt (det er det jeg bruker). For å bruke det er trinnene du følger:

Vi redigerer filen /etc/portage/make.conf og legger til følgende (de er de samme linjene 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.

I sin tur oppretter vi filen /etc/portage/env/no-LTO.conf og legger til 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 legger pakkene hvis kompilering mislykkes LTO. Han her min pakke. env (merk at jeg bruker nolto.conf i stedet for no-LTO.konf).

Vi må også legge til LTO til BRUK variabel av make.conf, dette er nødvendig fordi utviklerne av Gentoo de legger (sakte) til valgfrie oppdateringer for bruk av denne optimaliseringen i noen pakker.

Når dette er gjort, la oss fortsette med å kompilere alle systempakker på nytt:

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

Ved å bruke –fortsett forteller vi det Portage å ignorere feil, mens &> omdirigere utgangen av alle feil til en fil som heter feil, bruk denne filen for å se hvilke pakker som ikke klarer å kompilere og legg dem til i listen over pakke. env.

&> Vil frata oss all utdata, hvis vi vil se utdataene fra prosessen, må vi bruke (som rot) denne kommandoen:

tail -f /var/log/emerge.log

Og det er alt, jeg håper jeg ikke har etterlatt meg noen tvil om jeg vil muntre opp og skrive en artikkel om Openmp og / eller grafitt.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   MSX sa

    Gentoo, meh ...
    La oss komme til det viktige: Grafitt!

    1.    x11tete11x sa

      Den dumme og sensuelle Graphite xD, den subnormale tingen som sprenger xD-systemet ditt, jeg husker at sist gang jeg brukte det, var det nok å lage en for det itererer 50 ganger å gjøre «varsle-send KDE <3" slik at i iterasjon nummer 50, miljøet vil sprekke til helvete hahahahaha, ja, jeg skulle til re-farts xD

    2.    roader sa

      Jeg sa allerede at jeg fremdeles ble oppmuntret og laget en av Graphite. Men uansett, Graphite (og annen optimalisering) fungerer best med LTO. I motsetning til LTO har også Graphite og OpenMP et problem. Ikke alle programmer drar nytte av det, og i de som ikke drar nytte, reduseres ytelsen, så i dette tilfellet er det bedre å bruke den bare for noen få pakker.