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 å 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.
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.
Gentoo, meh ...
La oss komme til det viktige: Grafitt!
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
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.