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

<!-- source: ru/_includes/user-guide/data-processing/scheduler/manage-pools-common.md -->
# Управление вычислительными пулами

В данном разделе рассказано о том, как создавать пулы, управлять ресурсами и настройками вычислительных пулов в системе YTsaurus на примере CLI и веб-интерфейса.

## Общие сведения { #common }

В системе YTsaurus реализована возможность управлять вычислительными пулами. Поддерживаются такие действия с пулами, как:

- создание;
- переименование;
- перемещение;
- удаление;
- изменение настроек.

Изменение настроек вычислительного пула осуществляется путём редактирования соответствующих атрибутов пула. Доступные атрибуты для редактирования пользователем:

* `weight` — управление долей ресурсов родительского пула, которая будет доставаться текущему пулу;
* `max_operation_count` — ограничение на число выполняющихся (`running`) операций и операций в очереди (`pending`);
* `max_running_operation_count` — ограничение на число выполняющихся (`running`) операций;
* `strong_guarantee_resources` — словарь, описывающий гарантированные ресурсы пула;
* `forbid_immediate_operations` — запрет на запуск операций непосредственно в данном пуле;
* `mode` — способ распределения ресурсов между операциями в пуле;
* `fifo_sort_parameters` — управление очередностью запуска операций в fifo-пулах;
* `resource_limits` — словарь, задающий верхние ограничения для ресурсов, доступных пулу;
* `create_ephemeral_subpools` — разрешение создавать [эфемерные пулы](https://ytsaurus.tech/docs/ru/user-guide/data-processing/scheduler/scheduler-and-pools.md#puly-i-derevya-pulov);
* `ephemeral_subpool_config` — словарь, описывающий конфигурацию виртуальных пулов.

Подробное описание указанных атрибутов см. в разделе [Конфигурация пула](https://ytsaurus.tech/docs/ru/user-guide/data-processing/scheduler/pool-settings.md#pools).

### Валидация

При валидации система YTsaurus проверяет типы атрибутов, ограничение `max_operation_count >= max_running_operation_count`, количество тегов в списке `allowed_profiling_tags` (не более 200), отсутствие подпулов в fifo-пулах и согласованность гарантий на ресурсы.

Согласованность гарантий на ресурсы означает, что по каждому ресурсу сумма гарантий потомков не должна превышать гарантию родителя. Если на подпуле выставлена ненулевая гарантия на некоторый ресурс, то она должна быть выставлена и у родителя. При этом допускается, что у пула ненулевая гарантия выставлена на более чем одном ресурсе.
<!-- endsource: ru/_includes/user-guide/data-processing/scheduler/manage-pools-common.md -->

## Права доступа

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

Правами доступа к пулу управляют пользователи, у которых уже есть соответствующий доступ, — по умолчанию он выдается пользователю, создавшему пул.

Для запроса доступа к вычислительному пулу:

1. Перейдите на страницу пула из раздела `Scheduling`.
2. Выберите вкладку `ACL`.
3. Нажмите `Request permissions`, заполните открывшуюся форму и нажмите **Confirm**.

![](../../../../images/pool-request-permissions.jpg){ .center }

### Перечень допустимых действий с вычислительным пулом { #allowed_pool_actions }

- Для создания/удаления деревьев пулов необходимо право `write` на корень `//sys/pool_trees` (только для администраторов кластера YTsaurus).
- Для создания пулов необходимо право `write` или `modify_children` на родительском пуле (выдаётся вместе с правом доступа **Use** на родительский пул).
- Для удаления пула необходимо право `remove` на него (выдаётся вместе с правом доступа **Use** на родительский пул).
- Для изменения пользовательских атрибутов пула необходимо право `write` на пул (выдаётся вместе с правом доступа **Use** на родительский пул).
- Для изменения всех остальных атрибутов пула необходимо право `administer` (только для администраторов кластера YTsaurus).
- Для управления операциями в данном пуле и его потомках необходимо право `manage` (под управлением операциями скрывается возможность выполнять операции `suspend`, `resume` и `update_operation_parameters`, не являясь автором операции).

{% note warning "Ограничение" %}

Право `manage` на пул позволяет изменять с помощью команды `update_operation_parameters` только следующие параметры:

- `weight`;
- `weight` и `resource_limits` в `scheduling_options_per_pool_tree`;
- `scheduling_tag_filter`;
- `controller_agent_tag`.

Для изменения остальных параметров требуется право `manage` на саму операцию; для некоторых параметров могут потребоваться дополнительные права. В частности, право `manage` на пул не позволяет изменить параметр `pool` и переместить операцию в другой пул.

{% endnote %}

В качестве примера рассмотрим пул `project-root` в дереве пулов `default`.
Необходимый набор прав для управления подпулами представлен в листинге:

```bash
$ yt get //sys/pool_trees/default/project-root/@acl
[
    {
        "permissions" = [
            "modify_children";
        ];
        "action" = "allow";
        "subjects" = [
            "some_user";
        ];
        "inheritance_mode" = "object_and_descendants";
    };
    {
        "permissions" = [
            "write";
            "remove";
        ];
        "action" = "allow";
        "subjects" = [
            "some_user";
        ];
        "inheritance_mode" = "descendants_only";
    };
]
```

Пользователь может управлять подпулами, но не корневым пулом проекта, то есть не может изменить гарантию корневого пула проекта и другие параметры. Разрешение распространяется только на потомков данного пула.

<!-- source: ru/_includes/user-guide/data-processing/scheduler/manage-pools-cli.md -->
## Управление пулами через CLI { #cli }

Создание подпула:

```bash
yt create scheduler_pool --attributes='{pool_tree=default;name=project-subpool1;parent_name=project-root}'
```

В `attributes` можно дополнительно передать атрибуты пула, они будут провалидированы. В случае неуспешной валидации объект создан не будет.

Пример изменения веса для созданного пула:

```bash
yt set //sys/pool_trees/default/project-root/project-subpool1/@weight 10
```

Первичное выставление гарантии пула при условии, что у родителя имеется нераспределенная гарантия:

```bash
yt set //sys/pool_trees/default/project-root/project-subpool1/@strong_guarantee_resources '{cpu=50}'
```

Для изменения уже выставленной гарантии можно изменить конкретный параметр:

```bash
yt set //sys/pool_trees/default/project-root/project-subpool1/@strong_guarantee_resources/cpu 100
```

Перемещение производится стандартным образом:

```bash
yt move //sys/pool_trees/default/project-root/project-subpool1 //sys/pool_trees/default/new-project/new-subpool
```
Переименование через перемещение поддерживается.
При перемещении происходит валидация.

Атрибуты выставляются стандартным образом:

```bash
yt set //sys/pool_trees/default/project_pool/@max_operation_count 10
```
При выставлении атрибутов происходит валидация.
<!-- endsource: ru/_includes/user-guide/data-processing/scheduler/manage-pools-cli.md -->

## Управление пулами через веб-интерфейс { #ui }

Управление пулами в веб-интерфейсе осуществляется в разделе `Scheduling`.

Для создания подпула необходимо перейти в родительский пул, нажав на его имя. Далее нужно нажать кнопку `Create pool` и заполнить все обязательные поля в форме, после этого нажать `Confirm`.

Пример формы по созданию пула представлен на рисунке.

![](../../../../images/manage_pool_01.png)


Для редактирования настроек пула необходимо нажать на карандаш в строке с именем пула в правой части экрана, как показано на рисунке.

![](../../../../images/manage_pool_04.png)

Настройки пула, доступные для редактирования, разделены на группы. На рисунках приведены примеры общих настроек и гарантированных ресурсов, соответственно.

![](../../../../images/manage_pool_02.png)

![](../../../../images/manage_pool_03.png)

В разделе `Resource Limits` можно выставить верхнее ограничение для пула, если, например, необходимо, чтобы пул не выходил за потребление в 100 ядер. По умолчанию верхнего ограничения для пулов не существует, доступные пулу ресурсы ограничены мощностью кластера.

В разделе `Other Settings` приведены дополнительные настройки, в частности запрет на запуск операций в пуле.

{% note info "Примечание" %}

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

В узлах дерева пулов (в пулах, имеющих подпулы) запускать операции не следует, в противном случае сложнее расследовать различные проблемы при распределении ресурсов между пулами и операциями.

{% endnote %}
