Распределенная компиляция в Gentoo
Распределенная компиляция с помощью программы distcc
Настройка сервера
Установка
emerge distcc -av
Настройка
Сейчас главная опция allow - компьютеры которым разрешено подключаться
/etc/conf.d/distccd
... DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.0.0/24"
/etc/init.d/distccd start
Настройка клиента
Установка
emerge distcc -av
Настройка
Укажем адреса серверов которые будем использовать. Я не собираюсь использовать ресурсы локальной машины, поэтому удалю localhost и соответственно не буду загружать демон.
/etc/distcc/hosts
#ip:[port][/n] # n - максимальное количество задач, которые можно послать машине в любой момент времени # 127.0.0.1 192.168.0.1
Параметры компиляции
/etc/make.conf
#Вместо N укажите подходящее число для вашего случая. #Как правило это общее кол-во процессоров на ВСЕХ компьютерах, умноженное на 2 и плюс 1 MAKEOPTS="-jN" #Добавим distcc в переменную FEATURES FEATURES="distcc" # Установим директорию для временных файлов distcc DISTCC_DIR="/tmp/.distcc"
Мониторинг
На первый взгляд так и не поймешь работает или нет. Вместе с distcc есть монитор консольный и gui. Работает он странно, запускается на клиенте
DISTCC_DIR="/tmp/.distcc" distccmon-text 0.1
Обновляется с интервалом 0.1сек , но похоже что он показывает только то, что успел ухватить в этот момент времени.
Включить отладочную информацию на клиенте - очень непонятно
/etc/make.conf
DISTCC_VERBOSE="1" DISTCC_LOG="/tmp/distcc.log"
Лучше наблюдать лог на сервере, и сразу понятнее будет
/etc/conf.d/distccd
... DISTCCD_OPTS="${DISTCCD_OPTS} --log-level info --log-file=/tmp/distccd.log"
tail -f /tmp/distccd.log
distccd[6838] (dcc_job_summary) client: 192.168.0.103:46379 COMPILE_OK exit:0 sig:0 core:0 ret:0 time:87ms x86_64-pc-linux-gnu-gcc ls-kernel.c distccd[6839] (dcc_job_summary) client: 192.168.0.103:46380 COMPILE_OK exit:0 sig:0 core:0 ret:0 time:91ms x86_64-pc-linux-gnu-gcc ls-tree.c distccd[6841] (dcc_job_summary) client: 192.168.0.103:46381 COMPILE_OK exit:0 sig:0 core:0 ret:0 time:85ms x86_64-pc-linux-gnu-gcc ls-map.c
Обсуждение
поправьте опечатку """ #ip:[potr][/n] """ велика вероятность что вы имели в виду [port]
поправил