Очень тривиальное, но боевое решение, где-то на грани Unix Way. Я покажу только метод решения, без привязки к каким-то конкретным средам. Реализуйте по своему вкусу и убеждениям.
Кратко: исследуем производительность для конкретного количества задач в конкретном окружении для конкретной машины, и далее диспетчеризуем выполнение задач таким образом, чтобы загрузка машины не превысила заданного порога. Принятое допущение: ресурсоемкость при выполнении задач отличается