Распределенная компиляция (настроить distcc)

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

Аватара пользователя
RazorJack
Сообщения: 113
ОС: Gentoo 2008

Распределенная компиляция

Сообщение RazorJack »

Здравствуйте, уважаемые знатоки!
Есть 2 машины соединенные кроссовером
1. ip: 192.168.0.1
2. ip: 192.168.0.2
на машине 1 надо собрать много тежеловесных пакетов вроде OpenOffice хочу ускорить этот процесс за счет второй машины
Вот их конфиги:
1:::::::::::::::::::::::::::
cat /etc/distcc/hosts

Код: Выделить всё

192.168.0.2

cat /etc/conf.d/distccd

Код: Выделить всё

DISTCCD_OPTS=""
DISTCCD_EXEC="/usr/bin/distccd"
DISTCCD_PIDFILE="/var/run/distccd/distccd.pid"
DISTCCD_OPTS="${DISTCCD_OPTS} --port 3632"
DISTCCD_OPTS="${DISTCCD_OPTS} --log-file /var/log/distcc"
DISTCCD_OPTS="${DISTCCD_OPTS} --log-level critical"
DISTCCD_OPTS="${DISTCCD_OPTS} --job-lifetime 120"
DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.0.2/24"
DISTCCD_OPTS="${DISTCCD_OPTS} --listen 192.168.0.1"
DISTCCD_OPTS="${DISTCCD_OPTS} -N 15"

как я понимаю distccd на клиенте настраивать не надо и запускать тоже (или ошибаюсь ?)
также в /etc/make.conf в переменную FEATURES добавил distcc
2:::::::::::::::::::::::::::::::::::::
cat /etc/distcc/hosts

Код: Выделить всё

192.168.0.1     192.168.0.2

как я снова понимаю distcc на сервере тоже настраивать не надо но я настроил просто так
cat /etc/conf.d/distccd

Код: Выделить всё

DISTCCD_OPTS=""
DISTCCD_EXEC="/usr/bin/distccd"
DISTCCD_PIDFILE="/var/run/distccd/distccd.pid"
DISTCCD_OPTS="${DISTCCD_OPTS} --port 3632"
TMPDIR="/var/log/distccd/"
DISTCCD_OPTS="${DISTCCD_OPTS} --log-level debug"
DISTCCD_OPTS="${DISTCCD_OPTS} --log-file /var/log/distccd/distcc.log"
DISTCCD_OPTS="${DISTCCD_OPTS} --user distcc"
DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.0.1"
DISTCCD_OPTS="${DISTCCD_OPTS} --listen 192.168.0.2"
DISTCCD_OPTS="${DISTCCD_OPTS} -N 15"

также запущен сервис такой командой
/etc/init.d/distccd start
написало что все запущено, проверил pidfile есть , вот вывод netstat

Код: Выделить всё

netstat -t -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 192.168.0.2:distcc      *:*                     LISTEN
tcp        0      0 localhost:ipp           *:*                     LISTEN

:::::::::::::::::::::::::::::::::::
сеть между компами работает исправно ( на первой машине squid пашет через который я сижу и интернете сейчас) и пинги идут.
Во время коипмляции на первой машине distcc пишет что -то в роде "Distributing failed runnig local" и компиляция происходит локально. На машине 2 нагрузка на проц нулевая.
Куда копать ?
Спасибо сказали:
Аватара пользователя
alexbelkin
Сообщения: 60
ОС: GNU\Linux (gentoo), Mac OS X

Re: Распределенная компиляция

Сообщение alexbelkin »

Тяжеловесные пакеты (тот же OO.org) не рекомендуется собирать, использую distcc :crazy:
Спасибо сказали:
Аватара пользователя
RazorJack
Сообщения: 113
ОС: Gentoo 2008

Re: Распределенная компиляция

Сообщение RazorJack »

пакетов много (рабочая станция с нуля пока только консоль и squid рабочий) все надо сборать. Проблемы сборки каждого отдельно пакета буду рашать отдельно пока бы distcc заставить работать
Спасибо сказали:
Аватара пользователя
Shura
Сообщения: 1537
Статус: Оказывается и без KDE есть жизнь
ОС: FreeBSD 8.0-RC2

Re: Распределенная компиляция

Сообщение Shura »

он должен выводить более подробную ошибку, посмотри внимательней. И еще попробуй определить переменную DISTCC_HOSTS="192.168.0.1 192.168.0.2"
Rock'n'roll мертв © БГ
Спасибо сказали:
Аватара пользователя
RazorJack
Сообщения: 113
ОС: Gentoo 2008

Re: Распределенная компиляция

Сообщение RazorJack »

Посмотрел в чем дело
дело на стороне сервера вот лог

Код:

distccd[5754] (dcc_spawn_child) child started as pid3770 distccd[5754] (dcc_collect_child) cc child 3770 terminated with status 0x6e00 distccd[5754] (dcc_collect_child) cc times: user 0.000000s, system 0.000000s, 0 minflt, 0 majflt distccd[5754] (dcc_x_token_int) send DONE00000001 distccd[5754] (dcc_x_token_int) send STAT00006e00 distccd[5754] (dcc_x_file) send 98 byte file /tmp/distcc_a5e5b1f3.stderr with token SERR and compression 69 distccd[5754] (dcc_x_token_int) send SERR00000062 distccd[5754] (dcc_x_file) send 0 byte file /tmp/distcc_a5d9b1f3.stdout with token SOUT and compression 69 distccd[5754] (dcc_x_token_int) send SOUT00000000 distccd[5754] (dcc_x_token_int) send DOTO00000000 distccd[5754] i686-pc-linux-gnu-gcc cairo/cairomodule.c on localhost failed with exit code 110 distccd[5754] job complete distccd[5754] (dcc_cleanup_tempfiles_inner) deleted 5 temporary files distccd[5754] (dcc_job_summary) client: 192.168.0.1:34264 COMPILE_ERROR exit:110 sig:0 core:0 ret:0 time:988ms i686-pc-linux-gnu-gcc cairo/cairomodule.c

как я понял он хочет запустить на стороне сервера команду i686-pc-linux-gnu-gcc cairo/cairomodule.c но у меня сервер на атолон 64 а клиент - пень 3
чтото читал про кросскомпиляцию но она ведь без специальной настройки должна работать
вот лог со стороны клиента::::

Код:

distcc[23872] compile from pycairo-font.c to pycairo-font.o distcc[23872] (dcc_build_somewhere) Warning: failed to distribute, running locally instead distcc[23872] exec on localhost: i686-pc-linux-gnu-gcc -pthread -fno-strict-aliasing -O2 -march=pentium3 -fomit-frame-pointer -pipe -fPIC -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/python2.5 -c -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/python2.5 -c cairo/pycairo-font.c -o build/temp.linux-i686-2.5/cairo/pycairo-font.o distcc[23872] (dcc_collect_child) cc times: user 0.000000s, system 0.000000s, 0 minflt, 0 majflt distcc[23872] compile cairo/pycairo-font.c on localhost completed ok distcc[23872] elapsed compilation time 1.176496s distcc[23872] (dcc_exit) exit: code 0; self: 0.008000 user 0.016001 sys; children: 0.996062 user 0.156009 sys
Спасибо сказали:
Аватара пользователя
Shura
Сообщения: 1537
Статус: Оказывается и без KDE есть жизнь
ОС: FreeBSD 8.0-RC2

Re: Распределенная компиляция

Сообщение Shura »

у меня сервер на атолон 64 а клиент - пень 3

тогда про кросс компиляцию можно забыть
Rock'n'roll мертв © БГ
Спасибо сказали:
Аватара пользователя
RazorJack
Сообщения: 113
ОС: Gentoo 2008

Re: Распределенная компиляция

Сообщение RazorJack »

Shura писал(а):
26.03.2009 18:26
тогда про кросс компиляцию можно забыть

Это почему?
Я читал что можно даже на alpha собирать для ppc
Спасибо сказали:
Аватара пользователя
Xaktyc
Сообщения: 604
ОС: Gentoo 2008.0, WinXP

Re: Распределенная компиляция

Сообщение Xaktyc »

Думаю, что теоретически собирать ДЛЯ можно где угодно.
Можно делать бутерброды в песочнице. Однако оно ли надо?
Как вариант собрать базовую 32-битную систему(на атлоне), но это жестко))
Спасибо сказали:
Аватара пользователя
Nelar
Сообщения: 138

Re: Распределенная компиляция

Сообщение Nelar »

у меня сервер на атолон 64 а клиент - пень 3

тогда про кросс компиляцию можно забыть


У меня тоже сомнения в эффективности использования третьего пня для сборки под архитектуру amd64... по моему не сильно эффективно это будет с точки зрения времени компиляции, если это вобще возможно. А почему бы не собирать под i686 + фичи Атлона64?

В хэндбуке кстати есть интересная фраза..
Что такое кросс-компилирование?
Кросс-компилирование используется для сборки программ для одной архитектуры на компьютерах с другой архитектурой. Например, это позволяет использовать Athlon (i686) для сборки бинарников для K6-2 (i586), или же использовать Sparc для бинарников под ppc.
Спасибо сказали:
Аватара пользователя
Shura
Сообщения: 1537
Статус: Оказывается и без KDE есть жизнь
ОС: FreeBSD 8.0-RC2

Re: Распределенная компиляция

Сообщение Shura »

ксросс-компиляция, строго говоря, вообще никак не относится к распределенному компилированию. Просто мы здесь этот термин использовали не по назначению :)
Rock'n'roll мертв © БГ
Спасибо сказали: