Сеть для распределенной компиляции (Генту-коммунизм, есть ли такое?)

Sabayon, Calculate, Funtoo, Exherbo

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

Аватара пользователя
Jampire
Сообщения: 163
ОС: Gentoo Linux amd64 || x86

Re: Сеть для распределенной компиляции

Сообщение Jampire »

Что это вы все о технической стороне. Давайте поговорим о другой стороне. Для кого создается эта система и как ею будут пользоваться? Скорее всего вы захотите реализовать ее по принципу торрент сетей. Т.е. в любой момент времени рецепиент должен являться и донором. Но тогда идея системы сводится на нет. Существует три группы по мощности компов: слабые, сердние, мощные. В каждой группе по две подгруппы: узкий инет канал, широкий инет канал.

Группа слабые компы. Подгруппа узкий канал. Перед пользователем встает выбор: самому скачать пакет, самому себе его скомпилить либо отдать часть и без того дохлой машины еще кому-нибудь, чтобы она окончательно подвисла + ждать хз сколько времени, чтобы передать нужную инфу и получить собранный пакет обратно. Внимание вопрос, что для такого пользователя окажется быстрее и дешевле?

Группа слабые компы. Подгруппа широкий канал. В принципе, почти тоже самое, что и подгруппа выше. Разница лишь в стоимости канала. Т.е. в вопросе, что дешевле.

Группа средние компы. Подгруппа узкий канал. В принципе, группа средние компы в обоих подгруппах может отдавать часть своих ресов на компиляцию чужих пакетов. Но для подгруппы камнем преткновения становится ширина и стоимость канала. Что бужет быстрее и дешевле: скачать исходники либо скачать готовый пакет.

Группа средние компы. Подгруппа широкий канал. Почти идеальная группа для системы. Могут отдавать часть своих ресов. Вопрос лишь в цене канала, т.е., что дешевле. Но вопрос цены тут уже так остро не должен стоять.

Группа мощные компы. Подгруппа узкий канал. В принципе, вся группа с легкостью может выступать в роли донора. Но вот в подгруппе узкий канал каждый килобайт на счету и делиться им с кем-то еще как-то не хочется. К тому же тут остро встает вопрос времени, где пакет с учетом скачки скомпилится быстрее. Т.е. встает вопрос: самому скачать исходники и со скоростью торнадо скомпилить их либо делить и без того дохлый канал с кем-то еще.

Группа мощные компы. Подгруппа широкий канал. Также почти идеальная система. Вопрос только во времени, где скомпилится быстрее. Вопрос цены остро стоять не должен.

И того, из всех групп под систему подходят только две: группа средние компы, подгруппа широкий канал и группа мощные компы, подгруппа широкий канал. И сколько таких наберется хотябы на просторах СНГ, учитывая, что дешевый и быстрый инет, есть пожалуй только в Москве?

Лично мой пример: машина истребитель, монстр. Но канал очень узок. Но у моего прова есть полное зеркало генту. Скачка от туда в десятки раз дешевле, чем из инета, а скорость почти в сотню раз выше. Как вы думайте, какой выбор я сделаю?
Человек, говорящий, что это невозможно сделать, не должен мешать тому, кто это делает.
Спасибо сказали:
Аватара пользователя
joebraker
Сообщения: 98
ОС: OpenSuse 10.3

Re: Сеть для распределенной компиляции

Сообщение joebraker »

Вряд ли сеть сможет осчастливить всех на белом свете :)
Ширина канала не очень важна, ведь время компиляции обычно сильно больше времени скачивания.
Спасибо сказали:
Аватара пользователя
Jampire
Сообщения: 163
ОС: Gentoo Linux amd64 || x86

Re: Сеть для распределенной компиляции

Сообщение Jampire »

joebraker писал(а):
06.07.2009 22:26
Ширина канала не очень важна, ведь время компиляции обычно сильно больше времени скачивания.

Это если в системе будет находится с десяток компов. А если бы несколько тысяч? Тогда на первое место выходит стоимость и ширина канала.

Вобще идея состояла в том, чтобы снизить время компиляции. Снижать время компиляции для кого? Очевидно, что лишь для слабых машин. Мощные и средние вполне могут справиться самостоятельно. Но слабые машины не смогут воспользоваться системой, работяющей по принципу торрент-сети... Так для кого система?
Человек, говорящий, что это невозможно сделать, не должен мешать тому, кто это делает.
Спасибо сказали:
Аватара пользователя
joebraker
Сообщения: 98
ОС: OpenSuse 10.3

Re: Сеть для распределенной компиляции

Сообщение joebraker »

скорее для мощных машин.
Я свой комп слабым не считаю, но на компиляцию уходит прилично времени.
Обновление системы - пару дней. Короче говоря, тестировать это надо. Так сразу неочевидно, что получится.
Спасибо сказали:
Аватара пользователя
Xaktyc
Сообщения: 604
ОС: Gentoo 2008.0, WinXP

Re: Сеть для распределенной компиляции

Сообщение Xaktyc »

Как решишь потестить не в локалке, а в инете реальном (у меня мегабит, к примеру) - пиши в IM, что у меня в профиле, с радостью попробую.
Спасибо сказали:
XATRIX
Сообщения: 37
ОС: Gentoo 2008.0

Re: Сеть для распределенной компиляции

Сообщение XATRIX »

Проблема несколько иного характера. distcc использовать можно, но нужен не дюженый канал. Ибо прокачать "задачи" по вифаю уже к примеру проблематично. Приходится использовать lzo сжатие.. Но это тоже не выход. Ну допустим даже ели ты и сделаешь себе такой канла, то на 1-2 компа ты сможешь раздать задачи, но на 5-6 это уже всё... По-сему считаю что это технически не возможно....
Спасибо сказали:
Аватара пользователя
deadhead
Сообщения: 1913
Статус: zzz..z

Re: Сеть для распределенной компиляции

Сообщение deadhead »

7. Планы Gentoo на будущее в отношении distcc

distcc-subnetscan

distcc-subnetscan - это скрипт, написанный на perl (в данное время разработка окончательно не завершена), который сканирует заданную подсеть на предмет наличия компьютеров с запущенным и доступным демоном distccd. В будущем эта утилита также сможет проверять соответствие переменной CHOST с целью упростить кросс-компилирование.
[x] close
Спасибо сказали:
Аватара пользователя
Xaktyc
Сообщения: 604
ОС: Gentoo 2008.0, WinXP

Re: Сеть для распределенной компиляции

Сообщение Xaktyc »

Замечательно :)
Только, мне кажется, что в моем четырехэтажном доме не будет запущенных компов с distcc. Да и в квартале тоже...
А так - идея хорошая.
Спасибо сказали:
Аватара пользователя
Eronex
Сообщения: 106
ОС: Ubuntu

Re: Сеть для распределенной компиляции

Сообщение Eronex »

Так что, пробовал кто-нибудь по инету распределённую компиляцию?
Мне кажется есть смысл, потому что например бинарные пакеты скачать и установить быстрее, чем скомпилировать. Конечно они сжатые, но трафик ведь тоже можно сжимать?
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Сеть для распределенной компиляции

Сообщение serzh-z »

Eronex писал(а):
15.01.2011 16:57
Так что, пробовал кто-нибудь по инету распределённую компиляцию?
Несколько лет назад тут были отзывы - выигрыш, как помню, что-то в районе +25 %.
Спасибо сказали:
Аватара пользователя
Eronex
Сообщения: 106
ОС: Ubuntu

Re: Сеть для распределенной компиляции

Сообщение Eronex »

serzh-z писал(а):
15.01.2011 22:56
Eronex писал(а):
15.01.2011 16:57
Так что, пробовал кто-нибудь по инету распределённую компиляцию?
Несколько лет назад тут были отзывы - выигрыш, как помню, что-то в районе +25 %.
Значит есть результат! :)
У меня просто компьютер не мощный (Athlon64 3000+ DDR400), хотел чей-нибудь по эксплуатировать, при пересборке мира :)
stable-ветка, если будет желание у кого, готов поэкспериментировать. Канал 512 кбит/сек.
Спасибо сказали:
Аватара пользователя
Samae1L
Сообщения: 301
ОС: Gentoo x86_64

Re: Сеть для распределенной компиляции

Сообщение Samae1L »

Maximus_V писал(а):
04.07.2009 11:43
different писал(а):
03.07.2009 15:57
Вы уже придумали, как обойти конфликты версий distcc, gcc, glibc, binutils на нодах, разницу архитектур, библиотек, CFLAGS-ов?

Клиент, подключаясь к такому серверу, оставляет о себе всю необходимую техническую информацию - версии пакетов, флаги и пр. А сервер уже по этим параметрам подбирает других подходящих клиентов distcc. Или же сервер выдает весь список айпишников со всеми параметрами клиенту, и уже клиент на месте отсеивает те, которые ему не подходят.

Но позволю себе добавить ложку дегтя. ИМХО. Чтобы такая сеть работала и имела смысл, в ней должно быть порядка нескольких тысяч участников, может, десятки или сотни тысяч. Необходимо для того, чтобы в случайно выбранный момент времени кто-нибудь что-нибудь компилировал бы. А если будет пара-тройка десятков человек, то большую часть времени сеть будет простаивать - гентушники будут компилить большие пакеты по мере выхода соответствующих портежей. Выйдет так в день Х опеноффис - и все кинутся друг у друга его компилировать. А так как компилировать будут все - то пользы от сети компиляции не будет.


если уж начинать делать по уму, то для начала необходимо найти очень мощный сервер (а лучше - несколько), который начал бы компилировать особо тяжёлые пакеты (такие как xulrunner/firefox, open/libreoffice, qt, kde и т.д.) с наиболее распространёнными use- и cflags в наиболее распространённом окружении и складывать их в своё хранилище - многие захотят установить себе бинарник тяжёлого пакета со своими или почти своими флагами, чем больше бинарников будет в хранилище сервера, тем больше гентушников присоединится к сети и тем больше пакетов можно будет скомпилировать
теперь, делаем следующее: каждый организовывает у себя хранилище бинарников, складывая туда их при компиляции пакетов на своей машине, и отсылает свою конфигурацию на сервера, ведущие базу, и когда какой-нибудь гентушник хочет установить себе какой-нибудь пакет, сначала делается запрос на эти сервера, и в случае наличия такого бинарника в такой конфигурации, происходит соединение, бинарник скачивается и устанавливается
Всего лишь проекция ненужного маленького человечка, влачащая бессмысленное существование в Сети.
Спасибо сказали:
Аватара пользователя
Eronex
Сообщения: 106
ОС: Ubuntu

Re: Сеть для распределенной компиляции

Сообщение Eronex »

Samae1L писал(а):
16.01.2011 16:32
Maximus_V писал(а):
04.07.2009 11:43
different писал(а):
03.07.2009 15:57
Вы уже придумали, как обойти конфликты версий distcc, gcc, glibc, binutils на нодах, разницу архитектур, библиотек, CFLAGS-ов?

Клиент, подключаясь к такому серверу, оставляет о себе всю необходимую техническую информацию - версии пакетов, флаги и пр. А сервер уже по этим параметрам подбирает других подходящих клиентов distcc. Или же сервер выдает весь список айпишников со всеми параметрами клиенту, и уже клиент на месте отсеивает те, которые ему не подходят.

Но позволю себе добавить ложку дегтя. ИМХО. Чтобы такая сеть работала и имела смысл, в ней должно быть порядка нескольких тысяч участников, может, десятки или сотни тысяч. Необходимо для того, чтобы в случайно выбранный момент времени кто-нибудь что-нибудь компилировал бы. А если будет пара-тройка десятков человек, то большую часть времени сеть будет простаивать - гентушники будут компилить большие пакеты по мере выхода соответствующих портежей. Выйдет так в день Х опеноффис - и все кинутся друг у друга его компилировать. А так как компилировать будут все - то пользы от сети компиляции не будет.


если уж начинать делать по уму, то для начала необходимо найти очень мощный сервер (а лучше - несколько), который начал бы компилировать особо тяжёлые пакеты (такие как xulrunner/firefox, open/libreoffice, qt, kde и т.д.) с наиболее распространёнными use- и cflags в наиболее распространённом окружении и складывать их в своё хранилище - многие захотят установить себе бинарник тяжёлого пакета со своими или почти своими флагами, чем больше бинарников будет в хранилище сервера, тем больше гентушников присоединится к сети и тем больше пакетов можно будет скомпилировать
теперь, делаем следующее: каждый организовывает у себя хранилище бинарников, складывая туда их при компиляции пакетов на своей машине, и отсылает свою конфигурацию на сервера, ведущие базу, и когда какой-нибудь гентушник хочет установить себе какой-нибудь пакет, сначала делается запрос на эти сервера, и в случае наличия такого бинарника в такой конфигурации, происходит соединение, бинарник скачивается и устанавливается
Зачем всё так сложно :wacko:
Давайте просто составим список... или скрипт, который будет вносить "меня" в список с указанием версий distcc, gcc, glibc, binutils, а конечный пользователь просто посмотрит этот список и выберет себе хосты-помощники. У меня компьютер всегда включен... и ещё у нескольких тысяч полюбому :) Из этих тысяч человек 10 наберётся, а там и остальные подтянутся :)
Хотя бы даже здесь темку прикрепить и пускай себя обозначают те кто хочет :)
Спасибо сказали:
Аватара пользователя
taaroa
Сообщения: 1319

Re: Сеть для распределенной компиляции

Сообщение taaroa »

Samae1L писал(а):
16.01.2011 16:32
если уж начинать делать по уму

http://tinderbox.dev.gentoo.org/
:wq
Спасибо сказали:
Аватара пользователя
Samae1L
Сообщения: 301
ОС: Gentoo x86_64

Re: Сеть для распределенной компиляции

Сообщение Samae1L »

taaroa писал(а):
16.01.2011 16:56
Samae1L писал(а):
16.01.2011 16:32
если уж начинать делать по уму

http://tinderbox.dev.gentoo.org/


да, что-то вроде этого

Eronex писал(а):
16.01.2011 16:45
скрипт, который будет вносить "меня" в список с указанием версий distcc, gcc, glibc, binutils


а cflags? юз-флаги? всякие там INPUT_DEVICES?
Всего лишь проекция ненужного маленького человечка, влачащая бессмысленное существование в Сети.
Спасибо сказали:
Аватара пользователя
Eronex
Сообщения: 106
ОС: Ubuntu

Re: Сеть для распределенной компиляции

Сообщение Eronex »

Samae1L писал(а):
16.01.2011 19:32
Eronex писал(а):
16.01.2011 16:45
скрипт, который будет вносить "меня" в список с указанием версий distcc, gcc, glibc, binutils
а cflags? юз-флаги? всякие там INPUT_DEVICES?
Хосту вообще фиолетово. Ему всучают код, он компилирует, отправляет обратно результат. Вот эти штуки: distcc, gcc, glibc, binutils -- они для "правильной" компиляции. Получается и нужно то всего, чтобы необходимый минимум совпадал, а так даже архитектура машин может быть разной (типа 64-х битный хост помогает 32-х битному обрести машинный код).
Спасибо сказали:
Аватара пользователя
razum
Сообщения: 189
ОС: Gentoo 64

Re: Сеть для распределенной компиляции

Сообщение razum »

интерсное чтиво, мысль конечно витает в воздухе..
есть еще один неосвещенный ракурс: если компилить не по требованию emerge а по вбросу ebuild в сеть то может получиться оч широкий бинарный дистр (по пакетной базе)

так все таки:
чем дело движется и кем? где центр развития?
еще вопрос: откуда инфа про 25% если это не просто "блин, сделайте уже прототип, я в вас верю"
Спасибо сказали: