beldmit: (Программизм)
Dmitry Belyavskiy ([personal profile] beldmit) wrote2020-02-11 09:34 pm

Очередь с ограничениями на параллельность

Хочется гонять несколько одноплановых задач на нескольких виртуалках. При этом так как хост-машины не резиновые, то хочется ограничить параллельность в пределах одной группы. То есть, видимо, какая-то очередь.

Вопрос: какая очередь такое умеет?
vitus_wagner: My photo 2005 (Default)

[personal profile] vitus_wagner 2020-02-11 07:12 pm (UTC)(link)
Я в конце концов плюнул и стал свое писать. На питоне.
Теперь вот собираюсь написать вторую версию, чтобы она не на каждом хосте отдельно запускалась а один экземпляр обслуживал все хосты и в едином веб-интерфейсе показывал, что происходит.
vitus_wagner: My photo 2005 (Default)

[personal profile] vitus_wagner 2020-02-11 07:32 pm (UTC)(link)
Jenkins, Gitlab CI, Concourse CI.
vitus_wagner: My photo 2005 (Default)

[personal profile] vitus_wagner 2020-02-12 04:37 am (UTC)(link)
Вообще подозреваю, что у нас потребности практически одинаковы.

У меня сейчас эта система обслуживает 5 хостов. На двух (где LXC) по 4 потока выполнения, на двух (где KVM) - по три, на еще одном (где тоже LXC, но машинка на ARM64 существенно послабее x86_64 серверов) - два.

Еще у меня есть несколько хостов, где всего один поток, и которые к этой системе пока не подключены - один поток проще по крону запускать. А вот если свести все в единый центр - тогда их тоже нужно подключать.
yurikhan: (Default)

[personal profile] yurikhan 2020-02-12 04:27 am (UTC)(link)
Jenkins? Держим несколько (сколько надо) виртуалок, назначаем им всем один лейбл, задачи привязываем к этому лейблу.
vitus_wagner: My photo 2005 (Default)

[personal profile] vitus_wagner 2020-02-12 06:46 am (UTC)(link)
Тут по-моему несколько другая проблема - виртуалок много. А задач одновременно надо запускать не более чем. Для этого в дженкинсе используется не механизм лейблов, а механизм воркеров.