Как набирать группу задач при их рандомном поступлении?

На вход поступают разовые задачи. Выполнение их требует некого времени.

Задачи можно группировать в пачки по N, и они выполнятся быстро, по времени как одна. Не параллелится: отправили 1 или несколько на выполнение – ждём результат.

Пока вижу два варианта:
  1. То ли запускать первое выполнение сразу же, как поступило первое задание. Это неэффективно, когда поступает сразу несколько заданий – их можно было бы запустить одной пачкой, а так уйдёт 1-е и потом уже все минус 1-е – за два "такта".
  2. То ли выжидать какое-то время перед выполнением на случай поступления сразу-многих заданий. Тогда неэффективный простой в случае единичного задания.

Что говорят мировые лучшие практики на сей счёт?
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
@fireSparrow
В общем случае здесь не может быть какого-то хитрого решения, которое бы гарантировало оптимальность.

Нужно смотреть конкретно по вашей ситуации.
Насколько критична задержка? Что важнее - каждую новую задачу запустить как можно скорее или минимизировать среднее время обработки? Насколько долго обрабатывается пачка задач? Есть ли статистика о том, сколько новых задач успевает прийти за это время? Задачи обычно приходят рандомно-равномерно по времени, или есть какие-то закономерности? Все задачи имеют одинаковый приоритет, или некоторые срочные, а некоторые - не очень?

Причём, всё это должно быть в конкретных цифрах. Тогда можно будет что-то решать.
В текущей формулировке - сказать вообще ничего нельзя.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы