Массивно-распределенное параллельное выполнение задач - PullRequest
0 голосов
/ 27 сентября 2018

В настоящее время мы боремся со следующей задачей.Нам нужно запустить приложение Windows (работает только один экземпляр) 1000 раз с разными входными параметрами.Один запуск этого приложения может занять до нескольких часов.Такое чувство, что у нас та же проблема, что и у любой фермы рендеринга видео - каждое изображение видео должно рассчитываться независимо и параллельно - но это не рендеринг.

В настоящее время мы пытались выполнить его с заданиями Jenkins и Pipeline.Мы использовали параллельные шаги в конвейере и позволяли Jenkins поставить в очередь и выполнить приложение.Мы используем выражение ярлыка Jenkins, чтобы позволить Jenkins выбрать, какое задание можно запускать на каком узле.

В настоящее время ограничение в Jenkins связано с массовыми параллельными заданиями (https://issues.jenkins -ci.org / browse / JENKINS-47724 ).Когда очередь содержит несколько сотен заданий, добавление новых заданий заняло гораздо больше времени - станет еще хуже из-за увеличения очереди.И главная проблема: Дженкинс начнет выполнение параллельных параллельных конвейерных заданий только после завершения добавления всех в очередь.Мы уже исследовали идеи, как решить эту проблему:

  1. Распределенный Python: https://distributed.readthedocs.io/en/latest/

    a.Для отдельных функций это выглядит великолепно, но для полного запуска, как у нас в Jenkins => Развертывание и сбор результатов, выглядит сложным

    b.Требуется двунаправленная связь между клиентом и сервером - нет возможности подключить ее через NAT (VM Server)

  2. BOINC: https://boinc.berkeley.edu/

    a.для нашего понимания нам пришлось массово расширить бэкэнд, чтобы наши рабочие места работали => для настройки рабочих мест в BOINC нам пришлось написать много нового кода автоматизации

    b.в настоящее время нам нужно предварительно развернутое приложение, которое может отличаться для разных входных данных => нет эквивалента выражения Jenkins Label Expression

Есть идеи, как его решить?

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...