Сеть для распределенной компиляции (Генту-коммунизм, есть ли такое?)
Модератор: /dev/random
-
Jampire
- Сообщения: 163
- ОС: Gentoo Linux amd64 || x86
Re: Сеть для распределенной компиляции
Что это вы все о технической стороне. Давайте поговорим о другой стороне. Для кого создается эта система и как ею будут пользоваться? Скорее всего вы захотите реализовать ее по принципу торрент сетей. Т.е. в любой момент времени рецепиент должен являться и донором. Но тогда идея системы сводится на нет. Существует три группы по мощности компов: слабые, сердние, мощные. В каждой группе по две подгруппы: узкий инет канал, широкий инет канал.
Группа слабые компы. Подгруппа узкий канал. Перед пользователем встает выбор: самому скачать пакет, самому себе его скомпилить либо отдать часть и без того дохлой машины еще кому-нибудь, чтобы она окончательно подвисла + ждать хз сколько времени, чтобы передать нужную инфу и получить собранный пакет обратно. Внимание вопрос, что для такого пользователя окажется быстрее и дешевле?
Группа слабые компы. Подгруппа широкий канал. В принципе, почти тоже самое, что и подгруппа выше. Разница лишь в стоимости канала. Т.е. в вопросе, что дешевле.
Группа средние компы. Подгруппа узкий канал. В принципе, группа средние компы в обоих подгруппах может отдавать часть своих ресов на компиляцию чужих пакетов. Но для подгруппы камнем преткновения становится ширина и стоимость канала. Что бужет быстрее и дешевле: скачать исходники либо скачать готовый пакет.
Группа средние компы. Подгруппа широкий канал. Почти идеальная группа для системы. Могут отдавать часть своих ресов. Вопрос лишь в цене канала, т.е., что дешевле. Но вопрос цены тут уже так остро не должен стоять.
Группа мощные компы. Подгруппа узкий канал. В принципе, вся группа с легкостью может выступать в роли донора. Но вот в подгруппе узкий канал каждый килобайт на счету и делиться им с кем-то еще как-то не хочется. К тому же тут остро встает вопрос времени, где пакет с учетом скачки скомпилится быстрее. Т.е. встает вопрос: самому скачать исходники и со скоростью торнадо скомпилить их либо делить и без того дохлый канал с кем-то еще.
Группа мощные компы. Подгруппа широкий канал. Также почти идеальная система. Вопрос только во времени, где скомпилится быстрее. Вопрос цены остро стоять не должен.
И того, из всех групп под систему подходят только две: группа средние компы, подгруппа широкий канал и группа мощные компы, подгруппа широкий канал. И сколько таких наберется хотябы на просторах СНГ, учитывая, что дешевый и быстрый инет, есть пожалуй только в Москве?
Лично мой пример: машина истребитель, монстр. Но канал очень узок. Но у моего прова есть полное зеркало генту. Скачка от туда в десятки раз дешевле, чем из инета, а скорость почти в сотню раз выше. Как вы думайте, какой выбор я сделаю?
Группа слабые компы. Подгруппа узкий канал. Перед пользователем встает выбор: самому скачать пакет, самому себе его скомпилить либо отдать часть и без того дохлой машины еще кому-нибудь, чтобы она окончательно подвисла + ждать хз сколько времени, чтобы передать нужную инфу и получить собранный пакет обратно. Внимание вопрос, что для такого пользователя окажется быстрее и дешевле?
Группа слабые компы. Подгруппа широкий канал. В принципе, почти тоже самое, что и подгруппа выше. Разница лишь в стоимости канала. Т.е. в вопросе, что дешевле.
Группа средние компы. Подгруппа узкий канал. В принципе, группа средние компы в обоих подгруппах может отдавать часть своих ресов на компиляцию чужих пакетов. Но для подгруппы камнем преткновения становится ширина и стоимость канала. Что бужет быстрее и дешевле: скачать исходники либо скачать готовый пакет.
Группа средние компы. Подгруппа широкий канал. Почти идеальная группа для системы. Могут отдавать часть своих ресов. Вопрос лишь в цене канала, т.е., что дешевле. Но вопрос цены тут уже так остро не должен стоять.
Группа мощные компы. Подгруппа узкий канал. В принципе, вся группа с легкостью может выступать в роли донора. Но вот в подгруппе узкий канал каждый килобайт на счету и делиться им с кем-то еще как-то не хочется. К тому же тут остро встает вопрос времени, где пакет с учетом скачки скомпилится быстрее. Т.е. встает вопрос: самому скачать исходники и со скоростью торнадо скомпилить их либо делить и без того дохлый канал с кем-то еще.
Группа мощные компы. Подгруппа широкий канал. Также почти идеальная система. Вопрос только во времени, где скомпилится быстрее. Вопрос цены остро стоять не должен.
И того, из всех групп под систему подходят только две: группа средние компы, подгруппа широкий канал и группа мощные компы, подгруппа широкий канал. И сколько таких наберется хотябы на просторах СНГ, учитывая, что дешевый и быстрый инет, есть пожалуй только в Москве?
Лично мой пример: машина истребитель, монстр. Но канал очень узок. Но у моего прова есть полное зеркало генту. Скачка от туда в десятки раз дешевле, чем из инета, а скорость почти в сотню раз выше. Как вы думайте, какой выбор я сделаю?
Человек, говорящий, что это невозможно сделать, не должен мешать тому, кто это делает.
-
joebraker
- Сообщения: 98
- ОС: OpenSuse 10.3
Re: Сеть для распределенной компиляции
Вряд ли сеть сможет осчастливить всех на белом свете 
Ширина канала не очень важна, ведь время компиляции обычно сильно больше времени скачивания.
Ширина канала не очень важна, ведь время компиляции обычно сильно больше времени скачивания.
-
Jampire
- Сообщения: 163
- ОС: Gentoo Linux amd64 || x86
Re: Сеть для распределенной компиляции
Это если в системе будет находится с десяток компов. А если бы несколько тысяч? Тогда на первое место выходит стоимость и ширина канала.
Вобще идея состояла в том, чтобы снизить время компиляции. Снижать время компиляции для кого? Очевидно, что лишь для слабых машин. Мощные и средние вполне могут справиться самостоятельно. Но слабые машины не смогут воспользоваться системой, работяющей по принципу торрент-сети... Так для кого система?
Человек, говорящий, что это невозможно сделать, не должен мешать тому, кто это делает.
-
joebraker
- Сообщения: 98
- ОС: OpenSuse 10.3
Re: Сеть для распределенной компиляции
скорее для мощных машин.
Я свой комп слабым не считаю, но на компиляцию уходит прилично времени.
Обновление системы - пару дней. Короче говоря, тестировать это надо. Так сразу неочевидно, что получится.
Я свой комп слабым не считаю, но на компиляцию уходит прилично времени.
Обновление системы - пару дней. Короче говоря, тестировать это надо. Так сразу неочевидно, что получится.
-
Xaktyc
- Сообщения: 604
- ОС: Gentoo 2008.0, WinXP
Re: Сеть для распределенной компиляции
Как решишь потестить не в локалке, а в инете реальном (у меня мегабит, к примеру) - пиши в IM, что у меня в профиле, с радостью попробую.
-
XATRIX
- Сообщения: 37
- ОС: Gentoo 2008.0
Re: Сеть для распределенной компиляции
Проблема несколько иного характера. distcc использовать можно, но нужен не дюженый канал. Ибо прокачать "задачи" по вифаю уже к примеру проблематично. Приходится использовать lzo сжатие.. Но это тоже не выход. Ну допустим даже ели ты и сделаешь себе такой канла, то на 1-2 компа ты сможешь раздать задачи, но на 5-6 это уже всё... По-сему считаю что это технически не возможно....
-
deadhead
- Сообщения: 1913
- Статус: zzz..z
Re: Сеть для распределенной компиляции
7. Планы Gentoo на будущее в отношении distcc
distcc-subnetscan
distcc-subnetscan - это скрипт, написанный на perl (в данное время разработка окончательно не завершена), который сканирует заданную подсеть на предмет наличия компьютеров с запущенным и доступным демоном distccd. В будущем эта утилита также сможет проверять соответствие переменной CHOST с целью упростить кросс-компилирование.
[x] close
-
Xaktyc
- Сообщения: 604
- ОС: Gentoo 2008.0, WinXP
Re: Сеть для распределенной компиляции
Замечательно 
Только, мне кажется, что в моем четырехэтажном доме не будет запущенных компов с distcc. Да и в квартале тоже...
А так - идея хорошая.
Только, мне кажется, что в моем четырехэтажном доме не будет запущенных компов с distcc. Да и в квартале тоже...
А так - идея хорошая.
-
Eronex
- Сообщения: 106
- ОС: Ubuntu
Re: Сеть для распределенной компиляции
Так что, пробовал кто-нибудь по инету распределённую компиляцию?
Мне кажется есть смысл, потому что например бинарные пакеты скачать и установить быстрее, чем скомпилировать. Конечно они сжатые, но трафик ведь тоже можно сжимать?
Мне кажется есть смысл, потому что например бинарные пакеты скачать и установить быстрее, чем скомпилировать. Конечно они сжатые, но трафик ведь тоже можно сжимать?
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
Eronex
- Сообщения: 106
- ОС: Ubuntu
Re: Сеть для распределенной компиляции
Значит есть результат!
У меня просто компьютер не мощный (Athlon64 3000+ DDR400), хотел чей-нибудь по эксплуатировать, при пересборке мира
stable-ветка, если будет желание у кого, готов поэкспериментировать. Канал 512 кбит/сек.
-
Samae1L
- Сообщения: 301
- ОС: Gentoo x86_64
Re: Сеть для распределенной компиляции
Maximus_V писал(а): ↑04.07.2009 11:43
Клиент, подключаясь к такому серверу, оставляет о себе всю необходимую техническую информацию - версии пакетов, флаги и пр. А сервер уже по этим параметрам подбирает других подходящих клиентов distcc. Или же сервер выдает весь список айпишников со всеми параметрами клиенту, и уже клиент на месте отсеивает те, которые ему не подходят.
Но позволю себе добавить ложку дегтя. ИМХО. Чтобы такая сеть работала и имела смысл, в ней должно быть порядка нескольких тысяч участников, может, десятки или сотни тысяч. Необходимо для того, чтобы в случайно выбранный момент времени кто-нибудь что-нибудь компилировал бы. А если будет пара-тройка десятков человек, то большую часть времени сеть будет простаивать - гентушники будут компилить большие пакеты по мере выхода соответствующих портежей. Выйдет так в день Х опеноффис - и все кинутся друг у друга его компилировать. А так как компилировать будут все - то пользы от сети компиляции не будет.
если уж начинать делать по уму, то для начала необходимо найти очень мощный сервер (а лучше - несколько), который начал бы компилировать особо тяжёлые пакеты (такие как xulrunner/firefox, open/libreoffice, qt, kde и т.д.) с наиболее распространёнными use- и cflags в наиболее распространённом окружении и складывать их в своё хранилище - многие захотят установить себе бинарник тяжёлого пакета со своими или почти своими флагами, чем больше бинарников будет в хранилище сервера, тем больше гентушников присоединится к сети и тем больше пакетов можно будет скомпилировать
теперь, делаем следующее: каждый организовывает у себя хранилище бинарников, складывая туда их при компиляции пакетов на своей машине, и отсылает свою конфигурацию на сервера, ведущие базу, и когда какой-нибудь гентушник хочет установить себе какой-нибудь пакет, сначала делается запрос на эти сервера, и в случае наличия такого бинарника в такой конфигурации, происходит соединение, бинарник скачивается и устанавливается
Всего лишь проекция ненужного маленького человечка, влачащая бессмысленное существование в Сети.
-
Eronex
- Сообщения: 106
- ОС: Ubuntu
Re: Сеть для распределенной компиляции
Зачем всё так сложноSamae1L писал(а): ↑16.01.2011 16:32Maximus_V писал(а): ↑04.07.2009 11:43
Клиент, подключаясь к такому серверу, оставляет о себе всю необходимую техническую информацию - версии пакетов, флаги и пр. А сервер уже по этим параметрам подбирает других подходящих клиентов distcc. Или же сервер выдает весь список айпишников со всеми параметрами клиенту, и уже клиент на месте отсеивает те, которые ему не подходят.
Но позволю себе добавить ложку дегтя. ИМХО. Чтобы такая сеть работала и имела смысл, в ней должно быть порядка нескольких тысяч участников, может, десятки или сотни тысяч. Необходимо для того, чтобы в случайно выбранный момент времени кто-нибудь что-нибудь компилировал бы. А если будет пара-тройка десятков человек, то большую часть времени сеть будет простаивать - гентушники будут компилить большие пакеты по мере выхода соответствующих портежей. Выйдет так в день Х опеноффис - и все кинутся друг у друга его компилировать. А так как компилировать будут все - то пользы от сети компиляции не будет.
если уж начинать делать по уму, то для начала необходимо найти очень мощный сервер (а лучше - несколько), который начал бы компилировать особо тяжёлые пакеты (такие как xulrunner/firefox, open/libreoffice, qt, kde и т.д.) с наиболее распространёнными use- и cflags в наиболее распространённом окружении и складывать их в своё хранилище - многие захотят установить себе бинарник тяжёлого пакета со своими или почти своими флагами, чем больше бинарников будет в хранилище сервера, тем больше гентушников присоединится к сети и тем больше пакетов можно будет скомпилировать
теперь, делаем следующее: каждый организовывает у себя хранилище бинарников, складывая туда их при компиляции пакетов на своей машине, и отсылает свою конфигурацию на сервера, ведущие базу, и когда какой-нибудь гентушник хочет установить себе какой-нибудь пакет, сначала делается запрос на эти сервера, и в случае наличия такого бинарника в такой конфигурации, происходит соединение, бинарник скачивается и устанавливается
Давайте просто составим список... или скрипт, который будет вносить "меня" в список с указанием версий distcc, gcc, glibc, binutils, а конечный пользователь просто посмотрит этот список и выберет себе хосты-помощники. У меня компьютер всегда включен... и ещё у нескольких тысяч полюбому
Хотя бы даже здесь темку прикрепить и пускай себя обозначают те кто хочет
-
taaroa
- Сообщения: 1319
-
Samae1L
- Сообщения: 301
- ОС: Gentoo x86_64
Re: Сеть для распределенной компиляции
да, что-то вроде этого
а cflags? юз-флаги? всякие там INPUT_DEVICES?
Всего лишь проекция ненужного маленького человечка, влачащая бессмысленное существование в Сети.
-
Eronex
- Сообщения: 106
- ОС: Ubuntu
Re: Сеть для распределенной компиляции
Хосту вообще фиолетово. Ему всучают код, он компилирует, отправляет обратно результат. Вот эти штуки: distcc, gcc, glibc, binutils -- они для "правильной" компиляции. Получается и нужно то всего, чтобы необходимый минимум совпадал, а так даже архитектура машин может быть разной (типа 64-х битный хост помогает 32-х битному обрести машинный код).
-
razum
- Сообщения: 189
- ОС: Gentoo 64
Re: Сеть для распределенной компиляции
интерсное чтиво, мысль конечно витает в воздухе..
есть еще один неосвещенный ракурс: если компилить не по требованию emerge а по вбросу ebuild в сеть то может получиться оч широкий бинарный дистр (по пакетной базе)
так все таки:
чем дело движется и кем? где центр развития?
еще вопрос: откуда инфа про 25% если это не просто "блин, сделайте уже прототип, я в вас верю"
есть еще один неосвещенный ракурс: если компилить не по требованию emerge а по вбросу ebuild в сеть то может получиться оч широкий бинарный дистр (по пакетной базе)
так все таки:
чем дело движется и кем? где центр развития?
еще вопрос: откуда инфа про 25% если это не просто "блин, сделайте уже прототип, я в вас верю"