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.
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.konf 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.konf 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.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.
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.
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.
Gentoo, meh ...
Przejdźmy do ważnej rzeczy: grafitu!
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
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.