LINUX.ORG.RU

Link браузеров с LTO и PGO

 ,


1

2

Собирается firefox, с LTO и PGO.
В первом проходе, PGO instrumentation - LTO стало требовать немерянно памяти, для линковки xul библиотеки.

Для линковки fennec-54, требуется теперь 6G RAM - для записи временных файлов в памяти.

sudo mount -o remount,size=6G,noatime /tmp

У неня тех доступа к такому железу, что имеют погромисты chromium,
cloud computing с 200(!)GB RAM.

Спрошу у вас - можно ли в первичной сборке PGO instrumentation, опустить LTO?
И включить LTO, лишь в завершающей сборке PGO?


Не знаю, в gentoo собирал с pgo, не понравилась работа. Стер как страшный сон.

masterdilly
()

- LTO стало требовать немерянно памяти, для линковки xul библиотеки.

Делай большой SWAP-файл на HDD, цепляй его, увеличивай /tmp, запускай компиляцию и жди, когда оно там всё слинкуется.

Такой SWAP-файл мне не раз помогал при линковке xul.so на виртуалках с ограничением RAM.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Сделано и такое - swapfile = RAM x 2 на SSD.
Сутки прошли, и компилятор - гоняет туда-сюда свои данные в swapfile, что наглядно видно в htop.

Видится, правы кодеры goolag-a, что нужно 200GB RAM.

blitz
() автор топика
Ответ на: комментарий от anonymous

.. компилять в один поток

Таки Intel CPU, что умеет быстро - как в один поток, так и во все имеющиеся core на борту

.. докупить озу

Суть годное замечание. Присматриваюсь уже к Kingstone и Hynix - довести до 16GB RAM.

blitz
() автор топика
Ответ на: комментарий от EXL

Кстати, для проверки - воспользовался compiler farm OpenSuse,
зная, что получается у них скомпилировать firefox и chromium.

Не-а, не получилось. Фиаско, на этапе линковки xul.
Из-за ограничения, именно памяти при компиляции с LTO.

blitz
() автор топика
Ответ на: комментарий от blitz

В один поток пропорционально меньше озу будет жрать, правда это не относится к завершающей стадии линковки.

anonymous
()

В первом проходе, PGO instrumentation - LTO стало требовать немерянно памяти, для линковки xul библиотеки.

Нахре.. Зачем тебе это ненужно? Лишний 1% производительности относительно бинарных пакетов собранных моззилой и гуглом? Ну успехов чо.

init_6 ★★★★★
()

У неня тех доступа к такому железу, что имеют погромисты chromium,

cloud computing с 200(!)GB RAM.

Попробуй использовать бинарную сборку.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от blitz

Я до 32 добил озу, сколько материнка позволяет. Тоже собираю много жручего (не браузеры, но llvm и всякое такое прочее). А в один поток вам посоветовали собирать не чтобы быстрее, а чтобы оно хоть как-то сумело закончить линковку.

d_a ★★★★★
()
Ответ на: комментарий от Deleted

Как ты считаешь, будеть правильно?
Собрать сначала лишь с PGO а этапе instrumentation - тот же firefox,
Натренировать на прохождение audio/video/js тестов, собрать данные
и затем, на втором этапе - собирать с PGO и LTO?

Скомпилировался, за два часа и не четыре месяца ))

blitz
() автор топика
Ответ на: комментарий от d_a

У меня, нет 32GB RAM на борту.
И ставить не собираюсь, потому что собираюсь менять комп.

LLVM/Clang - усшешно собирается с LTO и PGO.

  _cmake_flags+=(
    '-DCMAKE_BUILD_TYPE:STRING=Release'
    '-DCMAKE_INSTALL_PREFIX:PATH=/usr'
    '-DLLVM_HOST_TRIPLE=x86_64-pc-linux-gnu'
    '-DLLVM_APPEND_VC_REV:BOOL=ON'
    '-DLLVM_BUILD_LLVM_DYLIB:BOOL=ON'
    '-DLLVM_LINK_LLVM_DYLIB:BOOL=ON'
    '-DLLVM_DYLIB_EXPORT_ALL:BOOL=ON'
    '-DLLVM_ENABLE_RTTI:BOOL=ON'
    '-DLLVM_ENABLE_FFI:BOOL=ON'
    "-DFFI_INCLUDE_DIR:PATH=$(pkg-config --variable=includedir libffi)"
    "-DFFI_LIBRARY_DIR:PATH=$(pkg-config --variable=libdir libffi)"
    '-DLLVM_BINUTILS_INCDIR:PATH=/usr/include'
    '-DLLVM_BUILD_TESTS=ON'
    '-DLLVM_BUILD_DOCS:BOOL=ON'
    '-DLLVM_ENABLE_SPHINX:BOOL=ON'
    '-DLLVM_ENABLE_DOXYGEN:BOOL=OFF'
    '-DSPHINX_OUTPUT_HTML:BOOL=ON'
    '-DSPHINX_OUTPUT_MAN:BOOL=ON'
    '-DSPHINX_WARNINGS_AS_ERRORS:BOOL=OFF'
  )

  echo ${_cmake_flags[*]}
  cmake ${_cmake_flags[*]} "../${pkgbase}"

  if [ "${_build_pgo}" = 1 ]; then
    "${_build_gen}" stage2
  else
    "${_build_gen}"
  fi

  "${_build_gen}" ocaml_doc

  # Exclude the clang directory, since it'll be installed in a separate package
  sed -i \
    "s|^\([[:blank:]]*include(\"${srcdir}/build/tools/clang/cmake_install.cmake\")\)$|#\1|" \
    tools/cmake_install.cmake
blitz
() автор топика
Ответ на: комментарий от blitz

Собрать сначала лишь с PGO а этапе instrumentation - тот же firefox

Ну если профит от этого реально есть, а то результат может и не заметен будет.

Можно попробовать в каком-нибудь гугль клауде, или ажуре на бесплатной учетке создать инстанс с 32+Гб, правда хватит наверно на пару часов всего.

Deleted
()
Ответ на: комментарий от Deleted

Oy vey! Блиц - таки знает, что ему нужно over 64GB RAM и 4GB диска.

blitz
() автор топика
Ответ на: комментарий от blitz

У меня, нет 32GB RAM на борту.
И ставить не собираюсь, потому что собираюсь менять комп.

Покупайте для билда типа как у этого чувака. 32 Г это впритык, просто чтобы хоть что-то начать делать за конечное время.

d_a ★★★★★
()
Ответ на: комментарий от d_a

Благодарю тебя, за помощь!
И зойчем - он советывает AMD заместо настоящего процессора?
Заметьте себе, странную неувязку в ходе компиляции:

make -f /usr/tools/clang-tidy/
/usr/libexec/gcc/
blitz
() автор топика

Даже без лишних хитростей на сборку xul нужно памяти хотя бы пару гигов в одном потоке, а с pgo и lto не надо удивляться каким-то 6G.

Bfgeshka ★★★★★
()
Ответ на: комментарий от d_a

Цена и стоимость - суть понятия относительные, однако.

Скажи мне, чем ты кормишь свою кошку - и она скажет, кто ты.

blitz
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.