Облачная платформаEvolution

Система приоритетов и вытеснения задач


Система приоритетов позволяет управлять выполнением задач в очередях, обеспечивает соблюдение важности и срочности задач путем определения порядка их выполнения и автоматического вытеснения менее важных задач более важными.

В 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 и low в той же очереди.

  • Между очередями: может вытеснить любые задачи в Shared-очереди, но не вытесняет задачи из других Default- и Custom-очередей.

Средний medium

Приоритет, предназначенный для важных, но не срочных задач. При отсутствии указания приоритета пользовательские задачи в Default- и Custom-очередях получают medium по умолчанию.

Default- и Custom-очереди

  • Внутри очереди: может вытеснить только задачи с приоритетом low в той же очереди.

  • Между очередями: может вытеснить задачи в Shared-очереди.

Низкий low

Приоритет, предназначенный для фоновых, длительных процессов, которые могут ждать, пока будут освобождены ресурсы.

Default- и Custom-очереди

  • Внутри очереди: не может вытеснять любые другие задачи, но может быть вытеснен задачами high или medium в той же очереди.

  • Между очередями: может быть вытеснен любой задачей high или medium из Default- и Custom-очередей, а также любой задачей из Shared-очереди.

shared-medium

Средний приоритет в Shared-очереди. Выше, чем shared-low, но ниже любого базового приоритета. Предназначен для задач, которые могут использовать оставшиеся ресурсы, но требуют некоторого уровня гарантии выполнения.

Shared-очередь

  • Внутри очереди: может вытеснить только задачи с shared-low.

  • Между очередями: может быть вытеснена любой задачей с базовым приоритетом из Default- и Custom-очередей.

shared-low

Низкий приоритет в Shared-очереди. Задачи с этим приоритетом запускаются только тогда, когда нет конкурирующих запросов из Default- или Custom-очередей.

Shared-очередь

  • Внутри очереди: может быть вытеснена задачей с приоритетом shared-medium в Shared-очереди.

  • Между очередями: всегда вытесняется любой задачей из Default- и Custom-очередей с любым базовым приоритетом.