Управление вычислительными пулами
В данном разделе рассказано о том, как создавать пулы, управлять ресурсами и настройками вычислительных пулов в системе YTsaurus на примере CLI и веб-интерфейса.
Общие сведения
В системе 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
— разрешение создавать эфемерные пулы;ephemeral_subpool_config
— словарь, описывающий конфигурацию виртуальных пулов.
Подробное описание указанных атрибутов см. в разделе Характеристики пулов.
Валидация
При валидации система YTsaurus проверяет типы атрибутов, ограничение max_operation_count >= max_running_operation_count
, количество тегов в списке allowed_profiling_tags
(не более 200), отсутствие подпулов в fifo-пулах и согласованность гарантий на ресурсы.
Согласованность гарантий на ресурсы означает, что по каждому ресурсу сумма гарантий потомков не должна превышать гарантию родителя. Если на подпуле выставлена ненулевая гарантия на некоторый ресурс, то она должна быть выставлена и у родителя. При этом допускается, что у пула ненулевая гарантия выставлена на более чем одном ресурсе.
Права доступа
Для того чтобы управлять вычислительным пулом, необходимо запросить доступ к управлению пулом. Это можно сделать через веб-интерфейс YTsaurus.
Правами доступа к пулу управляют пользователи, у которых уже есть соответствующий доступ, — по умолчанию он выдается пользователю, создавшему пул.
Для запроса доступа к вычислительному пулу:
- Перейдите на страницу пула из раздела
Scheduling
. - Выберите вкладку
ACL
. - Нажмите
Request permissions
, заполните открывшуюся форму и нажмите Confirm.
Перечень допустимых действий с вычислительным пулом
- Для создания/удаления деревьев пулов необходимо право
write
на корень//sys/pool_trees
(только для администраторов кластера YTsaurus). - Для создания пулов необходимо право
write
илиmodify_children
на родительском пуле (выдаётся вместе с правом доступа Use на родительский пул). - Для удаления пула необходимо право
remove
на него (выдаётся вместе с правом доступа Use на родительский пул). - Для изменения пользовательских атрибутов пула необходимо право
write
на пул (выдаётся вместе с правом доступа Use на родительский пул). - Для изменения всех остальных атрибутов пула необходимо право
administer
(только для администраторов кластера YTsaurus).
В качестве примера рассмотрим пул project-root
в дереве пулов default
.
Необходимый набор прав для управления подпулами представлен в листинге:
$ 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";
};
]
Пользователь может управлять подпулами, но не корневым пулом проекта, то есть не может изменить гарантию корневого пула проекта и другие параметры. Разрешение распространяется только на потомков данного пула.
Управление пулами через CLI
Создание подпула:
yt create scheduler_pool --attributes='{pool_tree=default;name=project-subpool1;parent_name=project-root}'
В attributes
можно дополнительно передать атрибуты пула, они будут провалидированы. В случае неуспешной валидации объект создан не будет.
Пример изменения веса для созданного пула:
yt set //sys/pool_trees/default/project-root/project-subpool1/@weight 10
Первичное выставление гарантии пула при условии, что у родителя имеется нераспределенная гарантия:
yt set //sys/pool_trees/default/project-root/project-subpool1/@strong_guarantee_resources '{cpu=50}'
Для изменения уже выставленной гарантии можно изменить конкретный параметр:
yt set //sys/pool_trees/default/project-root/project-subpool1/@strong_guarantee_resources/cpu 100
Перемещение производится стандартным образом:
yt move //sys/pool_trees/default/project-root/project-subpool1 //sys/pool_trees/default/new-project/new-subpool
Переименование через перемещение поддерживается.
При перемещении происходит валидация.
Атрибуты выставляются стандартным образом:
yt set //sys/pool_trees/default/project_pool/@max_operation_count 10
При выставлении атрибутов происходит валидация.
Управление пулами через веб-интерфейс
Управление пулами в веб-интерфейсе осуществляется в разделе Scheduling
.
Для создания подпула необходимо перейти в родительский пул, нажав на его имя. Далее нужно нажать кнопку Create pool
и заполнить все обязательные поля в форме, после этого нажать Confirm
.
Пример формы по созданию пула представлен на рисунке.
Для редактирования настроек пула необходимо нажать на карандаш в строке с именем пула в правой части экрана, как показано на рисунке.
Настройки пула, доступные для редактирования, разделены на группы. На рисунках приведены примеры общих настроек и гарантированных ресурсов, соответственно.
В разделе Resource Limits
можно выставить верхнее ограничение для пула, если, например, необходимо, чтобы пул не выходил за потребление в 100 ядер. По умолчанию верхнего ограничения для пулов не существует, доступные пулу ресурсы ограничены мощностью кластера.
В разделе Other Settings
приведены дополнительные настройки, в частности запрет на запуск операций в пуле.
Примечание
Обратите внимание, что операции рекомендуется запускать именно в листьях дерева пулов, то есть в тех пулах, у которых нет подпулов. В таком случае полезно явно выставлять запрет на запуск операций непосредственно в данном пуле.
В узлах дерева пулов (в пулах, имеющих подпулы) запускать операции не следует, в противном случае сложнее расследовать различные проблемы при распределении ресурсов между пулами и операциями.