Пул ресурсов регулятора ресурсов

Применимо к:SQL Server Управляемый экземпляр SQL Azure

В регуляторе ресурсов SQL Server пул ресурсов представляет подмножество физических ресурсов экземпляра ядро СУБД. Регулятор ресурсов позволяет задать ограничения на загрузку ЦП, физических средств ввода-вывода и использование памяти, которые доступны для входящих запросов приложений в пуле ресурсов. Каждый пул ресурсов может содержать одну или несколько групп рабочей нагрузки. После запуска сеанса классификатор регулятора ресурсов назначает этот сеанс группе рабочей нагрузки и этот сеанс должен функционировать с ресурсами, назначенными этой группе рабочей нагрузки.

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

Пул ресурсов (или пул) представляет физические ресурсы сервера. Пул можно рассматривать как виртуальный экземпляр SQL Server внутри экземпляра SQL Server. Пул состоит из двух компонентов. Одна часть не перекрывается с другими пулами, что обеспечивает минимальное резервирование ресурсов. Другой компонент является общим с другими пулами, что поддерживает максимально возможное потребление ресурсов. Ресурсы пула определяются указанием одного или нескольких следующих параметров для каждого ресурса (ЦП, память и физический ввод-вывод).

MIN_CPU_PERCENT и MAX_CPU_PERCENT

Эти параметры являются минимальной и максимальной гарантированной средней пропускной способностью ЦП для всех запросов в пуле ресурсов при возникновении состязания ЦП. Можно использовать эти параметры для задания прогнозируемого использования ресурсов ЦП для нескольких рабочих нагрузок в зависимости от потребностей каждой рабочей нагрузки. Например, предположим, что отделы продаж и маркетинга компании пользуются одной и той же базой данных. Отдел продаж использует рабочую нагрузку с высокой нагрузкой на ЦП и самыми важными запросами. У отдела маркетинга рабочая нагрузка на ЦП также высока, но имеет более низкий приоритет. Создав отдельный пул ресурсов для каждого отдела, можно установить минимальный процент использования ЦП для пула ресурсов отдела продаж в значение 70, а максимальный процент использования ЦП для пула ресурсов отдела маркетинга — в значение 30. Эта конфигурация гарантирует, что рабочая нагрузка sales получает необходимые ресурсы ЦП, а рабочая нагрузка маркетинга изолирована от требований ЦП рабочей нагрузки sales. Максимальный процент ЦП — это оппортунистическое максимальное значение. Если есть доступная емкость ЦП, рабочие потоки используют все эти потоки, до 100 процентов. Максимальное значение применяется только при возникновении спорных моментов для ресурсов ЦП. В этом примере, если рабочая нагрузка отдела продаж отключена, рабочая нагрузка отдела маркетинга может использовать 100 процентов ЦП при необходимости.

CAP_CPU_PERCENT

Параметр CAP_CPU_PERCENT — это жесткое ограничение на пропускную способность ЦП для всех запросов в пуле ресурсов. Рабочие нагрузки, связанные с пулом, могут использовать емкость ЦП выше значения MAX_CPU_PERCENT, если она доступна, но не выше значения CAP_CPU_PERCENT. В соответствии с примером, приведенным в предыдущем разделе, предположим, что отдел маркетинга взимается за использование ресурсов. Они хотят прогнозировать выставление счетов и не хотят платить более чем за 30 процентов ЦП. Эта цель может быть достигнута, задав CAP_CPU_PERCENT значение 30 для пула ресурсов маркетинга.

MIN_MEMORY_PERCENT и MAX_MEMORY_PERCENT

Эти параметры являются минимальным и максимальным объемом памяти, зарезервированным для пула ресурсов, который не может быть предоставлен другим пулам ресурсов. Для баз данных без таблиц, оптимизированных для памяти, ссылка на память — предоставление памяти выполнения запросов, а не память буферного пула (страницы данных и индексов). Дополнительные сведения о предоставлении памяти выполнения запросов см. в разделе "Рекомендации по предоставлению памяти". Задание минимального значения памяти для пула гарантирует, что процент указанной памяти доступен для всех запросов, выполняемых в этом пуле ресурсов. Этот параметр отличается от MIN_CPU_PERCENT, так как в этом случае память может оставаться в указанном пуле ресурсов, даже если пул не имеет запросов в группах рабочих нагрузок, принадлежащих этому пулу. Следовательно, будьте осторожны при использовании этого параметра, так как эта память недоступна для использования любым другим пулом, даже если активные запросы отсутствуют. Установка максимального значения памяти для пула означает, что при выполнении запросов в этом пуле они никогда не получают больше, чем этот процент общей памяти.

Чтобы управлять с помощью Resource Governor памятью для таблиц, оптимизированных для памяти, необходимо привязать базу данных к отдельному пулу ресурсов. Дополнительные сведения см. в статье Привязка базы данных с таблицами, оптимизированными для памяти, к пулу ресурсов.

AFFINITY

Этот параметр позволяет привязать пул ресурсов к одному или нескольким планировщикам или узлам NUMA для еще большей изоляции ресурсов ЦП. Чтобы использовать сценарий продаж и маркетинга из предыдущих разделов, предположим, что отдел продаж нуждается в более изолированной среде и хочет 100 процентов ядра ЦП в любое время. С помощью параметра AFFINITY рабочие нагрузки отделов продаж и маркетинга могут быть назначены на разные процессоры. Если параметр CAP_CPU_PERCENT для пула маркетинга остается на месте, рабочая нагрузка отдела маркетинга продолжает использовать не более 30 процентов одного ядра, а рабочая нагрузка отдела продаж использует 100 процентов другого ядра. Что касается рабочих нагрузок продаж и маркетинга, они работают на двух изолированных компьютерах.

MIN_IOPS_PER_VOLUME и MAX_IOPS_PER_VOLUME

Эти параметры задают минимум и максимум физических операций ввода-вывода в секунду на том диска для пула ресурсов. Эти параметры можно использовать для управления физическими операциями ввода-вывода, предоставленными для пользовательских потоков для данного пула ресурсов. Например, отдел продаж создает несколько отчетов в конце месяца большими пакетами. Запросы в этих пакетах могут создавать IOS, которые могут насыщать том диска и влиять на производительность других рабочих нагрузок с более высоким приоритетом в базе данных. Чтобы изолировать эту рабочую нагрузку, MIN_IOPS_PER_VOLUME имеет значение 20, а MAX_IOPS_PER_VOLUME — 100 для пула ресурсов отдела продаж. Эти параметры управляют уровнем IOS, которые могут быть выданы для рабочей нагрузки.

Системные и определяемые пользователем пулы ресурсов

В регуляторе ресурсов есть два стандартных пула ресурсов: внутренний пул и пул по умолчанию. Можно создать дополнительные пулы.

Внутренний пул

Внутренний пул представляет ресурсы, потребляемые самим SQL Server. Этот пул всегда содержит только внутреннюю группу, и пул не может быть изменен каким-либо образом. Потребление ресурсов внутренним пулом не ограничено. Любые рабочие нагрузки в пуле считаются критически важными для функции сервера. Таким образом, регулятор ресурсов позволяет внутреннему пулу оказывать давление на другие пулы, даже если это означает нарушение ограничений, установленных для других пулов.

Примечание.

Потребление ресурсов внутреннего пула и внутренней группы не вычитается из общего потребления ресурсов. Процентные показатели вычисляются на основе общего объема доступных ресурсов.

Пул по умолчанию

Пул по умолчанию — это первый стандартный пользовательский пул. До какой-либо настройки пул по умолчанию содержит только группу по умолчанию. Невозможно создать или удалить пул по умолчанию, но его можно изменить. Пул по умолчанию может содержать определяемые пользователем группы в дополнение к группе по умолчанию. Начиная с SQL Server 2016 (13.x) есть пул ресурсов по умолчанию для обычных операций SQL Server и внешний пул ресурсов по умолчанию для внешних процессов, таких как выполнение скриптов R.

Примечание.

Группу по умолчанию можно изменить, но ее нельзя переместить за пределы пула по умолчанию.

Внешний пул

Пользователи могут создать внешний пул для определения ресурсов для внешних процессов. Для служб R этот пул специально управляет rterm.exeи BxlServer.exepython.exe другими процессами, созданными ими. Дополнительные сведения см. в разделе CREATE EXTERNAL RESOURCE POOL

Определяемые пользователем пулы ресурсов

Определяемые пользователем пулы ресурсов — это пулы ресурсов, создаваемые для конкретных рабочих нагрузок в вашей среде. В регуляторе ресурсов предусмотрены инструкции DDL для создания, изменения и удаления пулов ресурсов. Дополнительные сведения см. в разделе "Создание пула ресурсов", "Удаление пула ресурсов" и "Изменение пула ресурсов" Параметры.

Распределение ресурсов между пулами

При настройке ЦП или памяти сумма значений MIN во всех пулах не может превышать 100 процентов ресурсов сервера. Кроме того, при настройке ЦП и памяти значения MAX и END могут быть установлены в пределах от значения MIN до 100 включительно.
Если в пуле определено ненулевое значение MIN, то эффективное значение MAX других пулов переопределяется. Из 100 процентов вычитается минимальное настроенное значение MAX для пула и сумма значений MIN других пулов.

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

Имя пула Параметр MIN, % Параметр MAX, % Вычисляемое эффективное значение MAX, % Вычисляемый общий % Комментарий
internal 0 100 100 0 Действующие max% и shared% не применимы к внутреннему пулу.
default 0 100 30 30 Эффективное значение MAX вычисляется следующим образом: min(100,100-(20+50)) = 30. Вычисляемый общий процентный показатель — это фактическое значение MAX - MIN = 30.
Пул 1 20 100 50 30 Эффективное значение MAX вычисляется так: min(100,100-50)=50. Вычисляемый общий процентный показатель — это фактическое значение MAX - MIN = 30.
Пул 2 50 70 70 20 Эффективное значение MAX вычисляется так: min(70,100-20)=70. Вычисляемый общий процентный показатель — это эффективное значение MAX-MIN=20.

Следующие формулы используются для вычисления эффективного max% и общего % в таблице:

  • Min(X,Y) — это наименьшие значения X и Y.

  • Sum(X) — это сумма значений X всех пулов.

  • Всего общих % = 100 - sum(MIN %).

  • Фактическое значение MAX % = min(X,Y).

  • Общие % = фактическое значение MAX % - MIN %.

Пользуясь приведенной выше таблицей в качестве примера, можно далее проиллюстрировать изменения, которые вносятся при создании еще одного пула. Этот пул — Пул 3, имеющий значение MIN %, равное 5.

Имя пула Параметр MIN, % Параметр MAX, % Вычисляемое эффективное значение MAX, % Вычисляемый общий % Комментарий
internal 0 100 100 0 Действующий максимальный процент и общий % не применимы к внутреннему пулу.
default 0 100 25 25 Эффективное значение MAX вычисляется следующим образом: min(100,100-(20+50+5)) = 25. Вычисляемый общий процентный показатель — это фактическое значение MAX - MIN = 25.
Пул 1 20 100 45 25 Эффективное значение MAX вычисляется так: min(100,100-55)=45. Вычисляемый общий процентный показатель — это фактическое значение MAX - MIN = 25.
Пул 2 50 70 70 20 Эффективное значение MAX вычисляется следующим образом: min(70,100-25) = 70. Вычисляемый общий процентный показатель — это эффективное значение MAX-MIN=20.
Пул 3 5 100 30 25 Эффективное значение MAX вычисляется следующим образом: min(100,100-70) = 30. Вычисляемый общий процентный показатель — это фактическое значение MAX - MIN = 25.

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

Ниже приведены особые случаи конфигурации пулов.

  • Во всех пулах заданы минимумы, которые в сумме дают 100% ресурсов сервера. В этом случае фактические максимумы равны минимумам. Это эквивалентно разделению ресурсов сервера на неперекрывающиеся части независимо от ресурсов, потребляемых в любом заданном пуле.

  • У всех пулов минимумы равны нулю. Все пулы конкурируют за доступные ресурсы, и их окончательный размер основан на потреблении ресурсов в каждом пуле. В формировании окончательного размера пула также играют роль другие факторы, например политики.

Задачи пула ресурсов

Описание задачи Статья
Описывает процесс создания пула ресурсов. Создание пула ресурсов
Описывает, как изменить параметры пула ресурсов. Изменение параметров пула ресурсов
Описывает, как удалить пул ресурсов. Удаление пула ресурсов

См. также