---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ytsaurus.tech/docs/en/user-guide/data-processing/scheduler/operations-limits.md
  - https://ytsaurus.tech/docs/ru/user-guide/data-processing/scheduler/operations-limits.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/ru/llms.txt

<!-- source: ru/_includes/user-guide/data-processing/scheduler/operations-limits.md -->
## Лимиты на количество операций

В системе YTsaurus существуют лимиты на число запускаемых операций в вычислительных пулах. Данные лимиты выступают защитным механизмом, ограничивая нагрузку на планировщик. Лимиты на количество операций бывают двух типов:

- Лимит на общее количество операций (`total_operation_count`). Ограничивает нагрузку на поддержание состояния дерева пулов и периодический пересчет fair share.
- Лимит на количество выполняющихся операций (`running_operation_count`). Ограничивает нагрузку на планирование запуска новых аллокаций.

Если при запуске операции в пуле достигнут лимит на общее количество операций, то команда `start_operation` завершится ошибкой. Если операция успешно запустилась, но при этом в пуле достигнут лимит на количество выполняющихся операций, операция перейдет в состояние `pending`, добавится в очередь и будет ждать завершения текущих выполняющихся операций. В иерархической структуре пулов операция учитывается в лимитах всех своих пулов-предков, и описанные правила применяются, если достигнут лимит хотя бы в одном из них. В общем случае лимиты в разных пулах не зависят друг от друга. Возможна ситуация, при которой сумма лимитов в дочерних пулах превосходит лимит в родительском пуле.

### Легковесные операции

Основную нагрузку на планировщик создает обработка хартбитов от exec-нод и планирование новых аллокаций. Объем этой работы напрямую зависит от количества операций, которые в данный момент участвуют в процессе планирования. Такие операции называются `schedulable`. К примеру, выполняющаяся операция может не быть `schedulable`, если у неё уже запущены все необходимые аллокации. Поскольку статус `schedulable` может меняться в ходе выполнения операции, сложно ограничить количество таких операций. Поэтому для ограничения нагрузки используется консервативный лимит на количество выполняющихся операций.

Некоторые операции могут не быть `schedulable` большую часть времени своей работы. К примеру, операция может состоять из единственного небольшого джоба, который запускается планировщиком достаточно быстро. В вышеописанной схеме подобные операции будут “вхолостую” занимать место в лимите на выполняющиеся операции, которое может быть ценным ресурсом в крупных инсталляциях YTsaurus. Специально для такого случая существует особый тип операций — *легковесные операции*. Такие операции не учитываются в счетчике `running_operation_count`, соответственно, к ним не применяется лимит на количество выполняющихся операций. Легковесные операции по-прежнему учитываются в `total_operation_count`, а также в специальном счетчике `lightweight_running_operation_count`, на который нет ограничений.

Для того, чтобы операция стала легковесной, необходимо выполнить несколько условий:

- Операция должна иметь тип [Vanilla](https://ytsaurus.tech/docs/ru/user-guide/data-processing/operations/vanilla.md).
- Пул, в котором запущена операция, должен быть настроен в режиме `fifo`.
- Для пула должны быть включены легковесные операции. За это отвечает настройка `enable_lightweight_operations`, которая управляется администратором кластера YTsaurus.

#### Рекомендации по использованию

В пуле, для которого включены легковесные операции, допустимо запускать и не легковесные операции. Такие операции будут учитываться в счётчике `running_operation_count` и для них будет применяться соответствующий лимит. Тем не менее, смешивание операций разных типов является антипаттерном и настоятельно не рекомендуется.

Алгоритм планировщика специальным образом учитывает легковесные операции и ожидает, что их джобы действительно смогут быть запущены за короткое время. В связи с этим не рекомендуется злоупотреблять и запускать в легковесных пулах тяжелые `Vanilla` операции, состоящие более чем из одного джоба. Формально такие операции будут считаться легковесными, но время их запуска может быть выше обычного.
<!-- endsource: ru/_includes/user-guide/data-processing/scheduler/operations-limits.md -->
