При запуске Dask, распределенного по кластеру из 8 компьютеров, каждое из которых имеет 8 ядер (всего 64 ядра), я получаю странный поток задач:
Есть некоторые пробелы между задачами (белые "столбцы"), которые появляются случайным образом.В идеале (как я понимаю) работники всегда должны быть заняты какой-то нерешенной задачей (как только работник освобождается, ему назначается задача).Это основной цикл моего скрипта, который генерирует предыдущую фигуру:
task_pool = as_completed(futures, with_results=True)
batches = task_pool.batches()
while not self.stopping_condition_is_met():
batch = next(batches)
for _, received_solution in batch:
...
new_task = self.client.submit(heavy_computation, args)
task_pool.add(new_task)
update_condition()
if self.stopping_condition_is_met():
break
Я заметил, что в эти периоды у меня есть 1-2 задачи обработки и 100-120 задач в памяти, которые внезапно меняютсядо 30-40 и 80-100.Почему это происходит?