Я настроил планировщик 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)