В наличии два пк на обоих генту с одинаковой версией 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
Июль 26, 2008 в 00:10
Гентушники такие гентушники.
Октябрь 21, 2008 в 08:21
И насколько ускорилась компиляция?
Октябрь 26, 2008 в 15:32
На убунте, ccache позволил собирать qutIM из svn вместо 1,5 часов всего за 15 минут. 1,5 часа только первая сборка шла.
За большое время – не пугайтесь, машина слабая и была тогда немного загружена.
Октябрь 26, 2008 в 16:13
Делал подобное. В данном примере участвуют 2 машины при компиляции. Думаю ускорение минимум 2х должно быть, т.к. ещё хеширование включено.
Октябрь 26, 2008 в 17:42
А компилируется, получается, все на удаленной машине? Так и смысл? Не проще бы было тогда сразу бинарники всучать….. Лучше уж у себя на машине все компилить.
Октябрь 26, 2008 в 21:14
Почему всё? Не всё, а только половина на удалённой. Даже меньше.
Октябрь 27, 2008 в 13:30
Компилируется оно не на удалённой машине (машинах), точнее не только там.
Во-первых влияет ключ 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, впрочем это достаточно просто решается симлинками, переменными окружения, скриптами-обёртками.