gentoo — ускорим компиляцию.

В наличии два пк на обоих генту с одинаковой версией gcc (4.3.1). Так как компиляция из исходников, в генту необходима. И компиляция отнимает некоторое время. Хотелось бы, отнимаемое некоторое время сократить. На помощь приходит distcc и ccache.

Всё описанное ниже нужно проделать на обоих ПК.

emerge distcc ccache #установим distcc и ccache

Две данные строчки появились в данной статье при помощи метода профессора Копи-Пастера:

mv /root/.ccache  /root/snafu.ccache
ln -s /var/tmp/ccache  /root/.ccache

distcc-config --set-hosts "192.168.0.1 192.168.0.2" #перечислим ip адреса серверов distcc
rc-update add distccd #
/etc/init.d/distccd restart
ccache -M 4G

nano /etc/conf.d/distccd

DISTCCD_OPTS=»${DISTCCD_OPTS} —allow 192.168.0.0/24″ #разрешим доступ для подсети

настроим make.conf

FEATURES=»ccache distcc»
CCACHE_DIR=»/var/tmp/ccache»
CCACHE_SIZE=»4G» DISTCC_HOSTS=»192.168.0.1 192.168.0.2″
DISTCC_DIR=»/tmp/.distcc»
#DISTCC_VERBOSE=»1″ #раз комментировать при желании лицезреть подробный отчет о проделанной работе distcc

p.s.: источники — о ccache о distcc

Реклама
Опубликовано в Gentoo. Метки: , . 7 комментариев »

комментариев 7 to “gentoo — ускорим компиляцию.”

  1. Anonymous Says:

    Гентушники такие гентушники.

  2. prosolin Says:

    И насколько ускорилась компиляция?

  3. ламерок Says:

    На убунте, ccache позволил собирать qutIM из svn вместо 1,5 часов всего за 15 минут. 1,5 часа только первая сборка шла.
    За большое время — не пугайтесь, машина слабая и была тогда немного загружена.

  4. Valentin Says:

    Делал подобное. В данном примере участвуют 2 машины при компиляции. Думаю ускорение минимум 2х должно быть, т.к. ещё хеширование включено.

  5. Селицкас Павел Says:

    А компилируется, получается, все на удаленной машине? Так и смысл? Не проще бы было тогда сразу бинарники всучать….. Лучше уж у себя на машине все компилить.

  6. prosolin Says:

    Почему всё? Не всё, а только половина на удалённой. Даже меньше.

  7. ilynxy Says:

    Компилируется оно не на удалённой машине (машинах), точнее не только там.

    Во-первых влияет ключ make -jN (в случае emerge, то этот ключ указывается в make.conf) — это количество одновременных «процессов» компиляции.

    Во-вторых в DISTCC_HOSTS (или файле /etc/distcc/hosts — точное расположение которого можно узнать набрав distcc —help) можно указать сколько процессов компиляции запускать на удалённых машинах:
    DISTCC_HOSTS=”192.168.0.1/X 192.168.0.2/Y″. Таким образом можно вручную распределить нагрузку между условно «сильными» и «слабыми» машинами.

    Для сборки необходимо чтобы версия gcc на разных машинах совпадала по первым двум цифрам (то есть важно чтобы было, скажем, 4.1.xxx, патчлевел неважен). Заголовочные файлы, насколько я знаю неважны, потому что на компиляцую отправляется исходник после препроцессора.

    И ещё одно условие — чтобы на разных машинах компиляторы назывались одинаково: например в ортодоксальном gentoo: gcc-4.2.2, в ubuntu попроще: gcc-4.2, впрочем это достаточно просто решается симлинками, переменными окружения, скриптами-обёртками.


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: