Система приоритетов позволяет управлять выполнением задач в очередях, обеспечивает соблюдение важности и срочности задач путем определения порядка их выполнения и автоматического вытеснения менее важных задач более важными.
В Default- и Custom-очередях поддерживаются базовые приоритеты:
Высокий high — применяется для важных и срочных задач, требующих гарантированных ресурсов и выполнения. Jupyter Server автоматически запускаются с высоким приоритетом.
Средний medium — применяется для важных, но не срочных задач. Такие задачи выполняются после всех задач с приоритетом high, но имеют преимущество перед задачами с приоритетом low.
Низкий low — применяется для фоновых задач, экспериментов и длительных вычислений, которые не требуют немедленного результата.
В Shared-очереди поддерживаются специальные приоритеты:
shared-medium — средний приоритет в Shared-очереди.
shared-low — самый низкий приоритет в Shared-очереди и в системе.
Приоритет задачи задает вы можете задать при запуске задачи через client_lib, CLI или Public API.
priority_class = "low" | "medium" | "high" | "shared-medium" | "shared-low"
Соблюдение приоритетов в системе обеспечивает механизм вытеснения задач. Когда появляется задача с более высоким приоритетом, система может остановить выполняющуюся задачу с низким приоритетом для освобождения ресурсов.
При поступлении задачи система классифицирует задачи по категориям приоритета:
Высокий приоритет high
Средний приоритет medium
Низкий приоритет low
Ниже описаны различные варианты выполнения задач в зависимости от приоритета.
Высокий приоритет high — задачи выполняются строго последовательно по принципу FIFO (First In, First Out) — первая поступившая задача выполняется первой.
Это означает, что задача, которая дольше всего ожидает выполнения, будет запущена первой, даже если ресурсов достаточно для запуска задачи, поступившей позже.
Задачи с приоритетом high могут выполняться параллельно с другими задачами, если на сервере достаточно ресурсов.
Ниже представлены примеры последовательности запуска задач high в разных ситуациях:
Пример 1: Последовательное выполнение задач high
Пример 2: Выбор задачи по принципу FIFO среди задач high
Пример 3: Параллельный запуск задач
Пример 4: Взаимодействие с задачами других приоритетов
Пример 1: Последовательное выполнение задач high.
На сервере имеется 8 доступных GPU-карт. В очереди находятся следующие задачи:
Задача А — высокий high приоритет, 4 GPU-карты, ожидает 15 минут.
Задача Б — высокий high приоритет, 6 GPU-карты, ожидает 10 минут.
Система запустит задачу А, так как задачи высокого приоритета выполняются строго последовательно. Задача Б будет ожидать освобождения ресурсов.
Для приоритетов high, medium и low:
Jupyter Server и задачи с высоким high приоритетом могут вытеснять задачи со средним medium и низким low приоритетом.
Задачи со средним medium приоритетом могут вытеснять только задачи с низким приоритетом.
Задачи с низким low приоритетом могут вытеснять задачи с приоритетом shared-medium и shared-low.
Jupyter Server защищены от вытеснения благодаря высокому high приоритету. Только задачи, запущенные с high приоритетом, могут конкурировать с ними за ресурсы.
Для приоритетов shared-medium и shared-low в Shared-очереди:
Любая задача с high, medium и low может вытеснить задачу с приоритетом shared-medium или shared-low.
Задачи могут вытеснять только другие задачи с более низким приоритетом.
Вытеснение никогда не происходит между задачами одинакового приоритета.
При попытке установить high, medium или low приоритеты в Shared-очереди будет отображаться ошибка.
Задача с приоритетом shared-medium и shared-low завершается сразу же, как только ресурс запрашивает Default- или Custom-очередь.
Если при запуске задачи не указан приоритет в параметре priority_class, то по умолчанию будет установлен:
в Default- и Custom-очередях средний medium приоритет;
в Shared-очереди shared-low приоритет.
Вытеснение задач внутри и между очередями:
Между очередями: задачи из Shared-очереди могут быть вытеснены любыми задачами из Default- или Custom-очередей.
Внутри очереди: в пределах одной очереди задача с более высоким приоритетом может вытеснить задачу с более низким приоритетом. Например, задача с приоритетом high из queue_1 может вытеснить задачу с приоритетом low из queue_1, но не может вытеснить задачу с приоритетом low из queue_2.
Запрет на вытеснение между очередями: задача из одной очереди не может вытеснить задачу из другой очереди, за исключением случаев с Shared-очередью.
В таблице ниже представлены типы приоритетов с их назначением и правилами вытеснения.
Приоритет | Описание | Очередь | Правила вытеснения |
|---|---|---|---|
Высокий high | Приоритет, предназначенный для критически важных и срочных задач. Jupyter Server всегда запускаются с высоким приоритетом и не могут быть понижены пользователем. | Default- и Custom-очереди |
|
Средний medium | Приоритет, предназначенный для важных, но не срочных задач. При отсутствии указания приоритета пользовательские задачи в Default- и Custom-очередях получают medium по умолчанию. | Default- и Custom-очереди |
|
Низкий low | Приоритет, предназначенный для фоновых, длительных процессов, которые могут ждать, пока будут освобождены ресурсы. | Default- и Custom-очереди |
|
shared-medium | Средний приоритет в Shared-очереди. Выше, чем shared-low, но ниже любого базового приоритета. Предназначен для задач, которые могут использовать оставшиеся ресурсы, но требуют некоторого уровня гарантии выполнения. | Shared-очередь |
|
shared-low | Низкий приоритет в Shared-очереди. Задачи с этим приоритетом запускаются только тогда, когда нет конкурирующих запросов из Default- или Custom-очередей. | Shared-очередь |
|