LTO: co to jest i jak go używać w Gentoo

Co to jest LTO?

LTO to akronim od Optymalizacja czasu łącza. Jest to operacja, w której kompilator opóźnia optymalizacje w momencie łączenia plików źródłowych, umożliwiając wyświetlenie wszystkich plików składających się na jeden plik wykonywalny jako jeden plik, a tym samym skuteczniejsze zastosowanie optymalizacji.

Po więcej informacji: wiki GCC.

Aby zobaczyć zalety i wady LTO: Benchmarki Phoronix

O czym należy pamiętać

  • Jest niestabilny, może powodować problemy w niektórych pakietach.
  • Niektóre pakiety nie mogą się skompilować (więcej o tym, jak to naprawić później).
  • Zaleca się użycie konsolidatora Złoto.
  • Korzystać zawsze najnowsza wersja GCC.

Złoto, oprócz obsługi zaawansowanych funkcji, które czynią go bardziej atrakcyjnym w użyciu LTO, jest szybszy niż GNU ld, zwłaszcza jeśli chodzi o duże programy, którymi może się stać 5 razy szybciej. Aby z niego skorzystać, uruchom:

binutils-config --linker ld.gold


Korzystanie z LTO: metoda zalecana

Zamiast aktywować LTO globalnie (co może powodować problemy) lepiej jest aktywować go w wybranych pakietach. W ten sposób tylko te pakiety, z których chcesz skorzystać LTO są kompilowane z tą optymalizacją lub która pozwala uniknąć wolniejszych czasów kompilacji w programach, które nie korzystają z tej optymalizacji. Można to osiągnąć w następujący sposób:

W katalogu / etc / portage / env tworzymy plik LTO.conf i dodajemy następujące wiersze:

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.

Więc do użycia LTO w paczce wystarczy umieścić w pliku jego nazwę (pełną nazwę, www-client / firefox, zamiast firefox) pakiet.envwraz z LTO.conf po prawej stronie. Poniżej przykład:

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

Teraz musimy tylko skompilować pakiety, których mają używać LTO.


Globalne używanie LTO (niezalecane)

Zamiast aplikować LTO pakiet po pakiecie, możemy go również zastosować globalnie (czego używam). Aby go zastosować, wykonaj następujące czynności:

Edytujemy plik /etc/portage/make.conf i dodajemy następujący (są to te same wiersze z pliku 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.

Z kolei tworzymy plik /etc/portage/env/no-LTO.conf i dodajemy następujące linie:

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 w pliku pakiet.env umieścimy pakiety, których kompilacja się nie powiedzie LTO. On tutaj mój pakiet.env (zwróć uwagę, że używam nolto.conf zamiast brak LTO.conf).

Musimy też dodać LTO USE zmienna z make.conf, jest to konieczne, ponieważ twórcy Gentoo dodają (powoli) opcjonalne łaty do wykorzystania tej optymalizacji w niektórych pakietach.

Gdy to zrobisz, przejdźmy do ponownej kompilacji wszystkich pakietów systemowych:

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

Używając –keep-going, mówimy Przewóz ignorować błędy, podczas gdy &> przekierowuj wyjście wszystkich błędów do pliku o nazwie błędy, użyj tego pliku, aby zobaczyć, które pakiety nie mogą się skompilować i dodaj je do listy pakiet.env.

&> Pozbawi nas całego wyjścia, jeśli chcemy zobaczyć wyjście procesu, musimy użyć (jako root) tego polecenia:

tail -f /var/log/emerge.log

I to wszystko, mam nadzieję, że nie pozostawiłem żadnych wątpliwości, czy to rozweselę i napiszę artykuł Openmp i / lub grafit.


Treść artykułu jest zgodna z naszymi zasadami etyka redakcyjna. Aby zgłosić błąd, kliknij tutaj.

3 komentarzy, zostaw swoje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   msx powiedział

    Gentoo, meh ...
    Przejdźmy do ważnej rzeczy: grafitu!

    1.    x11tete11x powiedział

      Głupi i rozsądny Graphite xD, ta nienormalna rzecz, która niszczy twój system xD, pamiętam, że ostatnim razem, gdy go użyłem, wystarczyło zrobić 50-krotną iterację, wykonując "powiadomienie-wyślij KDE <3", więc w iteracji numer 50 otoczenie wybuchnie do diabła hahahahaha, tak, szedłem na re-farts xD

    2.    drogowy powiedział

      Powiedziałem już, że wciąż jestem zachęcany i zrobiłem jeden z grafitu. W każdym razie grafit (i każda inna optymalizacja) działa najlepiej z LTO. Ponadto, w przeciwieństwie do LTO, Graphite i OpenMP mają problem. Nie wszystkie programy na tym korzystają, aw tych, które nie korzystają z tego, spada wydajność, dlatego w takim przypadku lepiej jest używać go tylko dla kilku pakietów.