Параметры управления ресурсами

Документ описывает параметры конфигурации системы в категории Управление ресурсами.

Внимание!
Ручное изменение этих параметров может повлиять на стабильность и безопасность системы. Действуйте с осторожностью.


Группы ресурсов

gp_resgroup_memory_policy


Определяет, как распределяется память между операторами запроса при использовании групп ресурсов.

  • Примечание: Параметр конфигурации сервера gp_resgroup_memory_policy действует только при установке управления ресурсами в значение группа ресурсов.
  • При значении auto YMatrix Database распределяет память между операторами запроса на основе лимитов памяти группы ресурсов. Не требующие много памяти операторы получают фиксированный объем памяти, а оставшаяся память выделяется операторам с высоким потреблением памяти.
  • При значении eager_free YMatrix Database улучшает распределение памяти, перераспределяя память, освобожденную завершенными операторами, операторам в последующих этапах запроса.
Тип данных Значение по умолчанию Диапазон Категория
enum eager_free eager_free / auto сегменты; система; перезагрузка/перезагрузка; суперпользователь

gp_resource_group_cpu_limit


Задает максимальный процент CPU-ресурсов на каждом узле сегмента YMatrix Database, который может быть выделен группам ресурсов.

  • Примечание: Параметр конфигурации сервера gp_resource_group_cpu_limit действует только при установке управления ресурсами в значение группа ресурсов.
Тип данных Значение по умолчанию Диапазон Категория
вещественное число 0.9 0.1 ~ 1.0 сегменты; система; перезагрузка

gp_resource_group_cpu_priority


Задает приоритет планирования CPU для процессов YMatrix относительно процессов, не относящихся к YMatrix, при включенных группах ресурсов.

  • Например, установка этого параметра в значение 10 задает соотношение CPU-ресурсов между процессами YMatrix и не-YMatrix как 10:1.
Тип данных Значение по умолчанию Диапазон Категория
int 10 1 ~ 256 сегменты; система; перезагрузка

gp_resource_group_queuing_timeout


Отменяет транзакции, находящиеся в очереди группы ресурсов дольше указанного таймаута (в миллисекундах).

  • Таймаут применяется индивидуально к каждой транзакции.
  • Значение по умолчанию 0 означает, что транзакции остаются в очереди бесконечно и не истекают по таймауту.
  • Примечание: Параметр конфигурации сервера gp_resource_group_queuing_timeout действует только при установке управления ресурсами в значение группа ресурсов.
Тип данных Значение по умолчанию Диапазон Категория
int 0 0 ~ INT_MAX мастер; сессия; перезагрузка

gp_resource_manager


Задает схему управления ресурсами, включенную в настоящее время в кластере YMatrix Database.

Тип данных Значение по умолчанию Диапазон Категория
enum queue group / queue сегменты; система; перезагрузка

memory_spill_ratio


Задает пороговое значение использования памяти (в процентах) для операторов с высоким потреблением памяти внутри транзакции.

  • Когда транзакция достигает этого порога, она выгружается на диск.
  • Значение по умолчанию memory_spill_ratio процентов определяется значением, назначенным группе ресурсов текущей активной роли.
  • Вы можете установить memory_spill_ratio на уровне сессии для выборочного изменения этого лимита для каждого запроса. Например, если конкретный запрос выгружается на диск и требует больше памяти, вы можете установить более высокое значение memory_spill_ratio, чтобы увеличить начальное выделение памяти.
  • При установке memory_spill_ratio на уровне сессии YMatrix Database не проверяет новое значение семантически до следующего выполнения запроса.
  • Параметр конфигурации сервера memory_spill_ratio действует только при установке управления ресурсами в значение группа ресурсов.
Тип данных Значение по умолчанию Диапазон Категория
int 20 0 ~ 100 мастер; сессия; перезагрузка

mx_cgroup_v1_base


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

  • По умолчанию /ymatrix/EmviwvEQDzobZxQi3pX8Co/postgres, если развертывание выполнено через GUI; в противном случае — пустая строка при развертывании через командную строку.
Тип данных Значение по умолчанию Категория
строка сегменты; система; перезагрузка; суперпользователь


Очереди ресурсов

gp_resqueue_memory_policy


Включает функциональность управления памятью YMatrix.

  • Примечание: Параметр конфигурации сервера gp_resqueue_memory_policy действует только при установке управления ресурсами в значение очередь ресурсов.
  • Алгоритм распределения eager_free использует тот факт, что не все операторы выполняются одновременно.
  • Планы запросов разделяются на несколько этапов. YMatrix Database быстро освобождает память, выделенную завершенным этапам, и перераспределяет ее новым этапам.
  • При значении none управление памятью ведет себя так же, как в версиях Greenplum до 4.1. При значении auto использование памяти запросом в основном контролируется параметром statement_mem и лимитами памяти очереди.
Тип данных Значение по умолчанию Диапазон Категория
enum eager_free eager_free / auto / none сегменты; система; перезагрузка/перезагрузка

gp_resqueue_priority


Включает или отключает приоритизацию запросов.

  • При отключении существующие настройки приоритета не учитываются при выполнении запроса.
  • Примечание: Параметр конфигурации сервера gp_resqueue_priority действует только при установке управления ресурсами в значение очередь ресурсов.
Тип данных Значение по умолчанию Категория
логический on сегменты; система; перезагрузка

gp_resqueue_priority_cpucores_per_segment


Задает количество CPU-единиц, выделяемых на каждый экземпляр сегмента.

  • Хост мастера обычно запускает только мастер-экземпляр, поэтому значение должно отражать общее количество доступных CPU-ядер на хосте.
  • Неправильные настройки могут привести к недостаточному использованию CPU или некорректной приоритизации запросов.
  • Примечание: Параметр конфигурации сервера gp_resqueue_priority_cpucores_per_segment действует только при установке управления ресурсами в значение очередь ресурсов.
Тип данных Значение по умолчанию Диапазон Категория
вещественное число 4.0 0.1 ~ 512.0 сегменты; система; перезагрузка

gp_resqueue_priority_sweeper_interval


Задает интервал (в миллисекундах), через который процесс-очиститель оценивает текущее использование CPU.

  • Когда новый оператор становится активным, его приоритет оценивается, а его доля CPU определяется на следующем интервале.
  • Примечание: Параметр конфигурации сервера gp_resqueue_priority_sweeper_interval действует только при установке управления ресурсами в значение очередь ресурсов.
Тип данных Значение по умолчанию Диапазон Категория
int 1000 500 ~ 15000 сегменты; система; перезагрузка

gp_vmem_protect_limit


Задает общий объем памяти (в МБ), который могут потреблять все процессы postgres на активном экземпляре сегмента.

  • Примечание: Параметр конфигурации сервера gp_vmem_protect_limit действует только при установке управления ресурсами в значение очередь ресурсов.

  • Если запрос превышает этот лимит, выделение памяти завершается ошибкой, и запрос завершается.

  • Указывайте только числовое значение. Например, используйте 4096 для 4096 МБ. Не включайте единицу измерения "MB" в значение.

  • Чтобы предотвратить чрезмерное выделение памяти, используйте следующие расчеты для оценки безопасного значения gp_vmem_protect_limit. Сначала вычислите gp_vmem, представляющий объем памяти YMatrix Database, доступный на хосте:

gp_vmem = ((SWAP + RAM) – (7.5GB + 0.05 * RAM)) / 1.7

где SWAP и RAM указаны в ГБ.

  • Затем вычислите max_acting_primary_segments, максимальное количество основных сегментов, которые могут работать на одном хосте, если зеркала активируются из-за сбоя кластера. Например, в конфигурации с 4 хостами и 8 основными сегментами на хост, сбой одного хоста активирует 2–3 зеркала на каждом оставшемся хосте.
  • Для этой конфигурации max_acting_primary_segments равно 11 (8 основных + 3 активированных зеркала).
  • Затем вычислите gp_vmem_protect_limit (переведите в МБ):
gp_vmem_protect_limit = gp_vmem / acting_primary_segments
  • Для рабочих нагрузок, генерирующих множество временных файлов, используйте скорректированную формулу:
gp_vmem = ((SWAP + RAM) – (7.5GB + 0.05 * RAM - (300KB * total_#_workfiles))) / 1.7
  • На основе значения gp_vmem вычислите параметр ядра vm.overcommit_ratio:
vm.overcommit_ratio = (RAM - (0.026 * gp_vmem)) / RAM
  • Примечание: Значение по умолчанию параметра ядра vm.overcommit_ratio в Red Hat Enterprise Linux составляет 50.
  • При развертывании через GUI этот параметр автоматически рассчитывается на основе аппаратного обеспечения. При развертывании через командную строку значение по умолчанию — 8192.
Тип данных Значение по умолчанию Диапазон Категория
int 11429 0 ~ (INT_MAX/2) сегменты; система; перезагрузка

max_resource_portals_per_transaction


Задает максимальное количество одновременно открытых пользовательских курсоров на транзакцию.

  • Примечание: Открытые курсоры удерживают активные слоты запросов в очередях ресурсов для управления ресурсами.
  • Примечание: Параметр конфигурации сервера max_resource_portals_per_transaction действует только при установке управления ресурсами в значение очередь ресурсов.
Тип данных Значение по умолчанию Диапазон Категория
int 64 0 ~ INT_MAX мастер; система; перезагрузка

max_resource_queues


Задает максимальное количество очередей ресурсов, которые могут быть созданы в системе YMatrix Database.

  • Примечание: Очереди ресурсов являются системно-ориентированными (как и роли), поэтому они применяются ко всем базам данных в системе.
Тип данных Значение по умолчанию Диапазон Категория
int 9 0 ~ INT_MAX мастер; система; перезагрузка

max_statement_mem


Задает максимальный лимит памяти (в КБ) для запроса.

  • Установка statement_mem слишком высокой может помочь избежать ошибок нехватки памяти на хостах сегментов при обработке запроса.
  • При gp_resqueue_memory_policy=auto использование памяти запросом контролируется statement_mem и лимитами памяти очереди ресурсов.
  • При расчете этого значения учитывайте конфигурацию одного хоста сегмента:
(seghost_physical_memory) / (average_number_concurrent_queries)
  • При изменении max_statement_mem и statement_mem необходимо сначала изменить max_statement_mem или указать его первым в файле postgresql.conf.
  • Примечание: Параметр конфигурации сервера max_statement_mem действует только при установке управления ресурсами в значение очередь ресурсов.
Тип данных Значение по умолчанию Диапазон Категория
int 2048000 32768 ~ INT_MAX мастер; сессия; перезагрузка; суперпользователь

resource_cleanup_gangs_on_wait


При отправке оператора через очередь ресурсов этот параметр очищает все неактивные группы выполнения запросов перед получением блокировки очереди ресурсов.

  • Примечание: Параметр конфигурации сервера resource_cleanup_gangs_on_wait действует только при установке управления ресурсами в значение очередь ресурсов.
Тип данных Значение по умолчанию Категория
логический on мастер; система; перезагрузка

resource_select_only


Определяет типы запросов, управляемых очередями ресурсов.

  • Если установлено в on, оцениваются только команды SELECT, SELECT INTO и CREATE TABLE AS SELECT和DECLARE CURSOR. Если установлено в off, также оцениваются команды INSERT, UPDATE и DELETE.
  • Примечание: Параметр конфигурации сервера resource_select_only действует только при установке управления ресурсами в значение очередь ресурсов.
Тип данных Значение по умолчанию Категория
логический off мастер; система; перезагрузка

runaway_detector_activation_percent


Задает процент использования vmem YMatrix Database, при котором запускается завершение запросов.

  • Если использование vmem на сегменте YMatrix Database превышает этот процент, система завершает запросы на основе потребления памяти, начиная с наиболее интенсивных. Запросы завершаются до тех пор, пока использование vmem не упадет ниже указанного порога.
  • Значение 0 отключает автоматическое завершение запросов на основе использования vmem.
  • Примечание: Параметр конфигурации сервера runaway_detector_activation_percent действует только при установке управления ресурсами в значение очередь ресурсов.
Тип данных Значение по умолчанию Диапазон Категория
int 90 0 ~ 100 сегменты; система; перезагрузка

statement_mem


Выделяет память на хостах сегментов на один запрос (в КБ).

  • Память, выделенная через этот параметр, не должна превышать max_statement_mem или лимит памяти очереди ресурсов, отправившей запрос.
  • При gp_resqueue_memory_policy =auto использование памяти запросом контролируется statement_mem и лимитами памяти очереди ресурсов.
  • При необходимости дополнительной памяти используются временные файлы выгрузки на диск.
  • Для оценки разумного значения используйте следующую формулу:
( gp_vmem_protect_limitGB * .9 ) / max_expected_concurrent_queries
  • Например, при значении gp_vmem_protect_limit, равном 8192MB(8GB), и до 40 одновременных запросов (включая 10% буфер):
(8GB * .9) / 40 = .18GB = 184MB
  • При изменении max_statement_mem и statement_mem необходимо сначала изменить max_statement_mem или указать его первым в файле postgresql.conf.
  • Параметр конфигурации сервера statement_mem действует только при установке управления ресурсами в значение очередь ресурсов.
Тип данных Значение по умолчанию Диапазон Категория
int 128000 50 ~ INT_MAX мастер; сессия; перезагрузка