2014-10-30 2 views
0

Я пишу ферму параллельной сборки для создания кросс-платформенных приложений C++ для разных платформ/сред. Каждый раз, когда новый код переносится на git repo, я строю и тестирую последний код на всех платформах.GNU Parallel host sticky jobs

Я установил параллельное правильное распределение заданий среди нескольких хостов с помощью опции -sshlogin. Передача файлов, сбор результатов и результатов. Это все работает более чем нормально, и мне нравится этот инструмент.

Время сборки иногда довольно долго для некоторых платформ, я хотел бы, чтобы сборка была как можно более инкрементной.

Моя единственная проблема заключается в том, что сборка является только инкрементальной, если планировщик отправляет задания на один и тот же компьютер и повторно использует артефакты предыдущей сборки на этом конкретном хосте.

Скажите, что у меня 3 хостов, у меня есть 1 шанс в 3 для построения, чтобы быть инкрементным. Если хосты не создали эту платформу через некоторое время, это может занять много времени.

Возможно ли получить контроль над хостом, какой конкретный источник входного сигнала будет запущен и только резерв на другие хосты, если хост занят?

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

Но очень простая реализация, в которой источники входного сигнала распределены в том же порядке, что и порядок, определяемый sshlogins, может быть простым операционным исправлением & в моей ситуации.

Я попытался найти исходный код, чтобы реализовать его сам, но я вижу только генерацию документа, когда просматриваю код в Savannah.

Любые идеи?

Спасибо,

M

ответ

0

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

http://michakfromparis.github.io/gnu-parallel-sticky/

исходный код доступен на GitHub здесь:

https://github.com/michaKFromParis/gnu-parallel-sticky

было не совсем легко, без каких-либо указаний, как исходный код имеет много истории, поэтому я попытался сохранить изменения в хирургии, чтобы облегчить слияние ваших будущих релизов. Я использую его в производстве уже более недели, и он отлично работает в моей конфигурации. Он также совместим со старыми форматами, должен быть заменой замены для обычных параллельных применений с дополнительными функциями сбоку. Хотелось бы получить обратную связь от других пользователей, хотя, возможно, это не совсем сухая. Спасибо, что поделились исходным кодом.

С наилучшими пожеланиями,

M

0

Там в настоящее время нет поддержки для определения приоритетности данного аргумента данной sshlogin. Исходный код на https://savannah.gnu.org/git/?group=parallel

Вы можете присоединиться к списку рассылки и обсудить идею: https://lists.gnu.org/mailman/listinfo/parallel

только приоритет в коде, когда работа не удалась на sshlogin, то GNU Parallel предпочитает, чтобы повторить, что работа на другом sshlogin. Может быть, это может быть расширено?

Если задание помечено как неудавшееся -1 время для данного sshlogin, то GNU Parallel следует предпочесть выполнять задание на этом sshlogin.

Смежные вопросы