LTO: что это такое и как использовать в Gentoo

Что такое LTO?

LTO это аббревиатура от Оптимизация времени ссылки. Это операция, при которой компилятор задерживает оптимизацию в момент связывания исходных файлов, позволяя вам видеть все файлы, составляющие один исполняемый файл, как один файл, и таким образом применять оптимизацию более эффективным способом.

Для дополнительной информации: вики из НКУ.

Чтобы увидеть преимущества и недостатки LTO: Контрольные показатели Phoronix

Что нужно иметь в виду

  • Он нестабилен, может вызвать проблемы в некоторых пакетах.
  • Некоторые пакеты не скомпилируются (подробнее о том, как это исправить позже).
  • Рекомендуется использовать линкер Золото.
  • Использовать Siempre последняя версия НКУ.

Золото, помимо поддержки расширенных функций, которые делают его более привлекательным в использовании LTO, это быстрее, чем гну лд, особенно если речь идет о больших программах, где он может стать В 5 раз быстрее. Чтобы использовать его, запустите:

binutils-config --linker ld.gold


Использование LTO: рекомендуемый метод

Вместо активации LTO глобально (что может вызвать проблемы) лучше активировать его в нужных нам пакетах. Таким образом, только те пакеты, которые вы хотите использовать LTO они скомпилированы с этой оптимизацией или которая позволяет избежать более медленного времени компиляции в программах, которые от этого не выигрывают. Этого можно добиться следующим образом:

В каталоге / etc / portage / env создаем файл 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.

Итак, чтобы использовать LTO в пакете нам нужно только указать его имя (полное имя, www-client / firefox, а не firefox) в файле пакет.env, Вместе с LTO.conf справа от вас. Ниже приведен пример:

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

Теперь нам просто нужно скомпилировать пакеты, которые мы хотим, чтобы они использовали LTO.


Глобальное использование LTO (не рекомендуется)

Вместо применения LTO пакет за пакетом, мы также можем применить его глобально (это то, что я использую). Чтобы применить его, выполните следующие действия:

Редактируем файл /etc/portage/make.conf и добавляем следующее (это те же строки файла 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.

В свою очередь, мы создаем файл /etc/portage/env/no-LTO.conf и добавляем следующие строки:

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

И в файле пакет.env мы поместим пакеты, компиляция которых не удалась LTO. Он вот мой пакет.env (обратите внимание, что я использую nolto.conf вместо не-LTO.conf).

Мы также должны добавить LTO использовать переменную Make.conf, это необходимо, потому что разработчики Gentoo они (медленно) добавляют необязательные патчи для использования этой оптимизации в некоторые пакеты.

Как только это будет сделано, приступим к перекомпиляции всех системных пакетов:

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

Используя –keep-going, мы говорим Волок игнорировать ошибки, а &> перенаправьте вывод всех ошибок в файл с именем errors, используйте этот файл, чтобы увидеть, какие пакеты не удалось скомпилировать, и добавьте их в список пакет.env.

&> Лишит нас всего вывода, если мы хотим увидеть вывод процесса, мы должны использовать (как root) эту команду:

tail -f /var/log/emerge.log

И все, надеюсь, я не оставил сомнений, если что подниму настроение и напишу статью про Openmp и / или Graphite.


3 комментариев, оставьте свой

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   MSX сказал

    Gentoo, да ...
    Переходим к главному: графиту!

    1.    x11тете11x сказал

      Глупый и чувственный Graphite xD, эта субнормальная штука, которая взрывает вашу систему xD, я помню, что в прошлый раз, когда я ее использовал, было достаточно сделать для этого итерацию 50 раз, выполняя «уведомить-отправить KDE <3», чтобы в итерации номер 50, окружение взорвется к черту хахахахаха, да я собирался пукать xD

    2.    путешественник сказал

      Я уже сказал, что меня все еще воодушевили, и я сделал одну из Graphite. Но в любом случае Graphite (и любая другая оптимизация) лучше всего работает с LTO. Кроме того, в отличие от LTO, у Graphite и OpenMP есть проблемы. Не все программы получают от этого выгоду, а в тех, которым это не выгодно, производительность снижается, поэтому в этом случае лучше использовать его только для нескольких пакетов.