Использование dask-jobqueue с SGECluster.adapt () и отправка задач перед активностью любого работника - PullRequest
0 голосов
/ 20 апреля 2020

Я настроил планировщик SGECluster с правильными настройками и подтвердил, что могу подключиться как к приборной панели, так и отправлять задания в мою очередь sge. Я хотел бы использовать метод adapt для масштабирования числа работников, зависящих от нагрузки входящей задачи. Эти задачи, как правило, не связаны между собой, поэтому они могут выполняться отдельными работниками в своем собственном процессе.

Я заметил, что планировщик не регистрирует задачи (по крайней мере, на панели инструментов), пока работник не доступен , Если этому первому работнику требуется некоторое время, чтобы стать доступным, и я отправляю задачи планировщику, он не будет знать, что ему нужно масштабироваться, и поэтому дополнительные работники окажутся в конце очереди. Можно ли предложить планировщику распознать, что задачи поступили до того, как первый работник подключился к планировщику, и соответствующим образом поместить запросы очереди для работников?

Я могу заставить работников стоять в очереди, если использую scale(n) вместо адаптации.

cluster = SGECluster(
    queue=queue_name,
    memory=maximum_memory,
    processes=worker_processes,  
    env_extra=env_list,
    scheduler_options=scheduler_options,
    log_directory=log_dir,
    job_name=name,
    walltime=walltime,
    resource_spec=f"{mem_spec}={maximum_memory}",
    job_extra=job_extra_list,
)

# if the first worker takes ages to begin running, then only one worker will be requested
# and tasks submitted in the interim do not adjust the scheduler behaviour
# cluster.adapt(minimum=1, maximum=20)

# queues up the requested workers straight away but doesn't adapt to load
cluster.scale(20)
...