Ресурсные группы
Ресурсные группы позволяют пользователям с ролью mdb_admin устанавливать квоты на выделяемые для обработки запросов ресурсы:
- вычислительные ресурсы CPU;
- объем оперативной памяти;
- количество одновременных транзакций.
В ресурсную группу может входить несколько ролей, квоты для них будут общими.
Yandex MPP Analytics for PostgreSQL получает от пользователя запрос на транзакцию и сопоставляет необходимые для ее выполнения ресурсы со свободными квотами в ресурсной группе. Если квот достаточно, выполнение запроса начинается немедленно. Если квот не хватает, запрос ожидает, пока выполнение других запросов не будет завершено и ресурсы не освободятся. Очередь запросов устроена по принципу «первый вошел — первый обслужен».
В кластерах с СУБД Apache Cloudberry™ и Greenplum® параметры ресурсных групп, ресурсные группы по умолчанию и подход к распределению оперативной памяти различаются.
О том, как управлять ресурсными группами, читайте в соответствующем разделе.
Параметры ресурсных групп
|
Название |
Описание |
|
|
Максимальное количество транзакций, обрабатываемых в ресурсной группе одновременно. Включает в себя активные транзакции и транзакции в режиме ожидания. Минимальное значение — |
|
|
Максимальный процент CPU, который может использовать ресурсная группа на сегменте. Минимальное значение — Подробнее в разделе Особенности распределения ресурсов CPU |
|
|
Приоритет ресурсной группы при распределении CPU. Минимальное значение — |
|
|
Номера логических ядер CPU, зарезервированных за ресурсной группой. Задается для мастера и сегментов в виде отдельных значений или диапазонов. По умолчанию —
Важно Для стабильной работы кластера не резервируйте ядро с номером |
|
|
Максимальная пропускная способность при чтении и записи, а также максимальное количество операций чтения и записи в секунду для ресурсной группы. Задается для каждого табличного пространства отдельно:
Для каждого параметра
|
|
|
Объем оперативной памяти (в мегабайтах), который может использовать ресурсная группа на сегменте. По умолчанию — Подробнее в разделе Особенности распределения оперативной памяти |
|
|
Минимальная стоимость плана запроса, при которой запрос назначается ресурсной группе. По умолчанию — |
|
Название |
Описание |
|
|
Средство контроля памяти, используемое ресурсной группой. В Yandex MPP Analytics for PostgreSQL по умолчанию используется значение |
|
|
Максимальное количество транзакций, обрабатываемых в ресурсной группе одновременно. Включает в себя активные транзакции и транзакции в режиме ожидания. Значение по умолчанию — |
|
|
Процент CPU, который может использовать ресурсная группа на сегменте. Минимальное значение — |
|
|
Зарезервированные номера ядер CPU. Номера или интервалы задаются в кавычках, например: Важно Для стабильной работы кластера не резервируйте ядро с номером |
|
|
Процент оперативной памяти, который может использовать ресурсная группа на сегменте. Минимальное значение — |
|
|
Процент от зарезервированной памяти Подробнее в разделе Особенности распределения оперативной памяти |
|
|
Порог использования оперативной памяти для транзакции в процентах от зарезервированной памяти |
Ресурсные группы по умолчанию
При создании кластера с СУБД Apache Cloudberry™ создаются следующие ресурсные группы:
-
admin_group— назначается ролям с атрибутом SUPERUSER. -
system_group— используется системными процессами Apache Cloudberry™. Назначить эту группу вручную нельзя. -
mdb_admin_group— группа для администраторов. По умолчанию назначена пользователю-администратору, логин и пароль которого заданы при создании кластера.Если будет достигнут лимит ресурсов этой группы, пользователь-администратор не сможет подключиться к кластеру и завершить ресурсоемкие процессы. Поэтому ресурсную группу
mdb_admin_groupрекомендуется назначать только пользователям с рольюmdb_admin. -
default_group— назначается остальным ролям, если при их создании ресурсная группа не была указана.
Значения параметров ресурсных групп:
| Параметр | admin_group |
system_group |
mdb_admin_group |
default_group |
|---|---|---|---|---|
CONCURRENCY |
20 |
0 |
20 |
20 |
CPU_MAX_PERCENT |
-1 |
10 |
1 |
20 |
CPU_WEIGHT |
100 |
100 |
100 |
100 |
CPUSET |
-1 |
-1 |
-1 |
-1 |
IO_LIMIT |
-1 |
-1 |
-1 |
-1 |
MEMORY_QUOTA |
-1 |
-1 |
-1 |
-1 |
MIN_COST |
0 |
500 |
0 |
500 |
Изменить значения параметров для admin_group нельзя.
Подробнее об управлении ролями читайте в разделе Пользователи и роли и в документации Apache Cloudberry™
При создании кластера с СУБД Greenplum® создаются следующие ресурсные группы:
-
admin_group— служебная группа, назначенная служебным ролямmonitorиgpadmin. -
mdb_admin_group— группа для администраторов. По умолчанию назначена пользователю-администратору, логин и пароль которого заданы при создании кластера.Если администратор и другие пользователи входят в одну ресурсную группу, и ресурсы в ней окажутся исчерпаны, то администратор не сможет подключиться к базе данных и вручную прервать ресурсоемкие процессы. Поэтому данную ресурсную группу рекомендуется назначать только пользователям с ролью
mdb_admin. -
default_group— общая группа. Будет назначена новой роли, если для нее явно не задана другая ресурсная группа.
Значения параметров ресурсных групп:
| Параметр | admin_group |
mdb_admin_group |
default_group |
|---|---|---|---|
MEMORY_AUDITOR |
vmtracker |
vmtracker |
vmtracker |
CONCURRENCY |
10 |
20 |
20 |
CPU_RATE_LIMIT |
10 |
1 |
30 |
CPUSET |
-1 |
-1 |
-1 |
MEMORY_LIMIT |
10 |
0 |
0 |
MEMORY_SHARED_QUOTA |
80 |
80 |
80 |
MEMORY_SPILL_RATIO |
0 |
0 |
0 |
Изменить значения параметров для admin_group нельзя.
Подробнее об управлении ролями читайте в разделе Пользователи и роли и в документации Greenplum®
Особенности распределения оперативной памяти
-
Если объем оперативной памяти для ресурсной группы ограничен (параметр
MEMORY_QUOTA), управление оперативной памятью выполняется на уровне сегмента.Объем памяти для запроса определяется значением настройки
gp_resgroup_memory_query_fixed_mem. Если настройка не задана, объем памяти для запроса рассчитывается какMEMORY_QUOTA ÷ CONCURRENCY.Подробнее о настройке
gp_resgroup_memory_query_fixed_memв документации Greenplum® .О дополнительных условиях, влияющих на объем памяти для запроса, читайте в документации Apache Cloudberry™
. -
Если объем оперативной памяти для ресурсной группы не ограничен, управление оперативной памятью выполняется на уровне запроса. Объем памяти для запроса определяется значением настройки statement_mem.
-
Для каждой ресурсной группы можно зарезервировать долю оперативной памяти сегмента (параметр
MEMORY_LIMIT). Эта доля делится на общую квоту и гарантированную квоту:-
Общая квота задается параметром
MEMORY_SHARED_QUOTAи ее могут использовать все транзакции в ресурсной группе. Yandex MPP Analytics for PostgreSQL выдает общую квоту транзакциям по принципу «первый вошел — первый обслужен». -
Гарантированная квота резервируется для каждой транзакции и вычисляется по формуле:
(MEMORY_LIMIT − MEMORY_SHARED_QUOTA) ÷ CONCURRENCY.
-
-
Если сумма значений
MEMORY_LIMITвсех ресурсных групп меньше100, то Yandex MPP Analytics for PostgreSQL выделяет незарезервированную оперативную память любым транзакциям любых ресурсных групп по принципу «первый вошел — первый обслужен».Транзакция использует незарезервированную оперативную память при соблюдении двух условий:
- гарантированная доля памяти для транзакции заполнена;
- общая квота ресурсной группы закончилась.
Для стабильной и эффективной работы кластера рекомендуется оставлять незарезервированной 10–20% оперативной памяти.
Особенности распределения ресурсов CPU
Выделить ресурсы CPU можно одним из способов:
-
Задать процент CPU, который может использовать ресурсная группа на сегменте. В Apache Cloudberry™ процент CPU задается в параметре
CPU_MAX_PERCENT, а в Greenplum® — в параметреCPU_RATE_LIMIT.При простое ресурсной группы ее ресурсы CPU перераспределяются в пользу ресурсных групп с высокой загрузкой. В Apache Cloudberry™ на распределение ресурсов CPU также влияет приоритет ресурсных групп (параметр
CPU_WEIGHT). При выходе ресурсной группы из простоя перераспределенные ресурсы CPU возвращаются к ней. -
Указать номера логических ядер CPU, которые будут зарезервированы за ресурсной группой (параметр
CPUSET). Эти ядра станут недоступны для других ресурсных групп даже при простое ресурсной группы, за которой они зарезервированы. Поэтому рекомендуется свести к минимуму количество ресурсных групп, которые используют зарезервированные ядра.Важно
Для стабильной работы кластера не резервируйте ядро с номером
0.
Разные ресурсные группы могут использовать разные способы распределения CPU.
Подробнее о ресурсных группах:
Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками Broadcom Inc в США и/или других странах.
Apache® и Apache Cloudberry™ являются зарегистрированными товарными знаками или товарными знаками Apache Software Foundation в США и/или других странах.