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

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed InstanceПрименимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance

В регуляторе ресурсов SQL ServerSQL Server пул ресурсов представляет подмножество физических ресурсов компонента Компонент Database EngineDatabase Engine.In the SQL ServerSQL Server Resource Governor, a resource pool represents a subset of the physical resources of an instance of the Компонент Database EngineDatabase Engine. Регулятор ресурсов позволяет задать ограничения на загрузку ЦП, физических средств ввода-вывода и использование памяти, которые доступны для входящих запросов приложений в пуле ресурсов.Resource Governor enables you to specify limits on the amount of CPU, physical IO, and memory that incoming application requests can use within the resource pool. Каждый пул ресурсов может содержать одну или несколько групп рабочей нагрузки.Each resource pool can contain one or more workload groups. После запуска сеанса классификатор регулятора ресурсов назначает этот сеанс группе рабочей нагрузки и этот сеанс должен функционировать с ресурсами, назначенными этой группе рабочей нагрузки.When a session is started, the Resource Governor classifier assigns the session to a specific workload group, and the session must run using the resources assigned to the workload group.

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

Пул ресурсов (или пул) представляет физические ресурсы сервера.A resource pool, or pool, represents the physical resources of the server. Пул можно считать виртуальным экземпляром SQL ServerSQL Server внутри экземпляра SQL ServerSQL Server .You can think of a pool as a virtual SQL ServerSQL Server instance inside of a SQL ServerSQL Server instance. Пул состоит из двух компонентов.A pool has two parts. Один из них не взаимодействует с другими пулами, что обеспечивает минимальное резервирование ресурсов.One part does not overlap with other pools, which enables minimum resource reservation. Другой компонент является общим с другими пулами, что поддерживает максимально возможное потребление ресурсов.The other part is shared with other pools, which supports maximum possible resource consumption. Ресурсы пула определяются указанием одного или нескольких следующих параметров для каждого ресурса (ЦП, память и физический ввод-вывод).The pool resources are defined by specifying one or more of the following settings for each resource (CPU, memory, and physical IO):

  • MIN_CPU_PERCENT и MAX_CPU_PERCENTMIN_CPU_PERCENT and MAX_CPU_PERCENT

    Эти параметры — минимальная и максимальная гарантированная средняя пропускная способность ЦП для всех запросов в пуле ресурсов при возникновении состязания за ЦП.These settings are the minimum and maximum guaranteed average CPU bandwidth for all requests in the resource pool when there is CPU contention. Можно использовать эти параметры для задания прогнозируемого использования ресурсов ЦП для нескольких рабочих нагрузок в зависимости от потребностей каждой рабочей нагрузки.You can use these settings to establish predictable CPU resource usage for multiple workloads that is based on the needs of each workload. Например, предположим, что отделы продаж и маркетинга компании пользуются одной и той же базой данных.For example, assume the Sales and Marketing departments in a company share the same database. Отдел продаж использует рабочую нагрузку с высокой нагрузкой на ЦП и самыми важными запросами.The Sales department has a CPU-intensive workload with high-priority queries. У отдела маркетинга рабочая нагрузка на ЦП также высока, но имеет более низкий приоритет.The Marketing department also has a CPU-intensive workload, but has lower-priority queries. Создав отдельный пул ресурсов для каждого отдела, можно установить минимальный процент использования ЦП для пула ресурсов отдела продаж в значение 70, а максимальный процент использования ЦП для пула ресурсов отдела маркетинга — в значение 30.By creating a separate resource pool for each department, you can assign a minimum CPU percentage of 70 for the Sales resource pool and a maximum CPU percentage of 30 for the Marketing resource pool. Это гарантирует, что рабочая нагрузка отдела продаж получит необходимые ей ресурсы ЦП, а рабочая нагрузка отдела маркетинга будет изолирована от требований к ЦП рабочей нагрузки отдела продаж.This ensures that the Sales workload receives the CPU resources it requires and the Marketing workload is isolated from the CPU demands of the Sales workload. Обратите внимание, что максимальный процент использования ЦП — это уступающий максимум.Note that maximum CPU percentage is an opportunistic maximum. При наличии доступной производительности ЦП рабочая нагрузка использует ее до 100 процентов.If there is available CPU capacity, the workload uses it up to 100 percent. Максимальное значение применяется только при возникновении состязания за ресурсы ЦП.The maximum value only applies when there is contention for CPU resources. В этом примере, если рабочая нагрузка отдела продаж отключена, рабочая нагрузка отдела маркетинга может использовать 100 процентов ЦП при необходимости.In this example, if the Sales workload is switched off, the Marketing workload can use 100 percent of the CPU if needed.

  • CAP_CPU_PERCENTCAP_CPU_PERCENT

    Параметр CAP_CPU_PERCENT — это жесткое ограничение на пропускную способность ЦП для всех запросов в пуле ресурсов.The CAP_CPU_PERCENT setting is a hard cap limit on the CPU bandwidth for all requests in the resource pool. Рабочие нагрузки, связанные с этим пулом, могут использовать производительность ЦП выше значения MAX_CPU_PERCENT, если она доступна, но не превышать CAP_CPU_PERCENT.Workloads associated with the pool can use CPU capacity above the value of MAX_CPU_PERCENT if it is available, but not above the value of CAP_CPU_PERCENT. В приведенном выше примере предположим, что с отдела маркетинга взимается плата за использование ресурсов.Using the example above, lets assume that the Marketing department is being charged for their resource usage. Они хотят иметь прогнозируемое выставление счетов и не хотят платить за более чем 30 процентов ЦП.They want predictable billing and do not want to pay for more than 30 percent of the CPU. Это выполняется путем установки CAP_CPU_PERCENT в значение 30 для пула ресурсов отдела маркетинга.This can be accomplished by setting the CAP_CPU_PERCENT to 30 for the Marketing resource pool.

  • MIN_MEMORY_PERCENT и MAX_MEMORY_PERCENTMIN_MEMORY_PERCENT and MAX_MEMORY_PERCENT

    Эти параметры указывают минимальный и максимальный объемы памяти, резервируемые для данного пула ресурсов, который не подлежит использованию совместно с другими пулами ресурсов.These settings are the minimum and maximum amount of memory reserved for the resource pool that cannot be shared with other resource pools. В случае баз данных с таблицами, оптимизированными для памяти, подразумевается доступная для выполнения запросов память, а не память буферного пула (например, страниц данных и индексов).For databases without memory-optimized tables, the memory referenced here is query execution grant memory, not buffer pool memory (for example, data and index pages). Установка минимального значения памяти для пула дает гарантию того, что указанный процент памяти будет доступен для всех запросов, которые могут выполняться в этом пуле ресурсов.Setting a minimum memory value for a pool means that you are ensuring that the percentage of memory specified will be available for any requests that might run in this resource pool. Это важное различие по сравнению с MIN_CPU_PERCENT, поскольку в этом случае память может оставаться в данном пуле ресурсов, даже если пул не имеет запросов в группах рабочей нагрузки, принадлежащих к нему.This is an important differentiator compared to MIN_CPU_PERCENT, because in this case memory may remain in the given resource pool even when the pool does not have any requests in the workload groups belonging to this pool. Поэтому очень важно крайне внимательно использовать этот параметр, поскольку эта память будет недоступна для любого другого пула, даже если активных запросов нет.Therefore it is crucial to be careful when using this setting, because this memory will be unavailable for use by any other pool, even when there are no active requests. Максимальное значение памяти для пула означает, что запросы, выполняемые в этом пуле, никогда не получат больше данной доли общей памяти.Setting a maximum memory value for a pool means that when requests are running in this pool, they will never get more than this percentage of overall memory.

    Чтобы управлять с помощью Resource Governor памятью для таблиц, оптимизированных для памяти, необходимо привязать базу данных к отдельному пулу ресурсов.In order to govern memory for memory-optimized tables with Resource Governor, you should bind the database to a separate resource pool. Дополнительные сведения см. в статье Привязка базы данных с таблицами, оптимизированными для памяти, к пулу ресурсов.For more information, see Bind a Database with Memory-Optimized Tables to a Resource Pool.

  • AFFINITYAFFINITY

    Этот параметр позволяет привязать пул ресурсов к одному или нескольким планировщикам или узлам NUMA для еще большей изоляции ресурсов ЦП.This setting lets you affinitize a resource pool to one or more schedulers or NUMA nodes for greater isolation of CPU resources. В вышеупомянутом сценарии с отделами продаж и маркетинга предположим, что отделу продаж требуется более изолированная среда и необходимо 100 процентов ядра ЦП постоянно.Using the Sales and Marketing scenario above, lets assume that the Sales department needs a more isolated environment and wants 100 percent of a CPU core at all times. С помощью параметра AFFINITY рабочие нагрузки отделов продаж и маркетинга могут быть назначены на разные процессоры.By using the AFFINITY option the Sales and Marketing, workloads can be scheduled on different CPUs. Если параметр CAP_CPU_PERCENT для пула маркетинга остается на месте, рабочая нагрузка отдела маркетинга продолжает использовать не более 30 процентов одного ядра, а рабочая нагрузка отдела продаж использует 100 процентов другого ядра.Assuming the CAP_CPU_PERCENT on the Marketing pool is still in place, the Marketing workload continues to use a maximum of 30 percent of one core, while the Sales workload uses 100 percent of the other core. Рабочие нагрузки отделов продаж и маркетинга фактически выполняются на 2 изолированных компьютерах.As far as the Sales and Marketing workloads are concerned, they are running on two isolated machines.

  • MIN_IOPS_PER_VOLUME и MAX_IOPS_PER_VOLUMEMIN_IOPS_PER_VOLUME and MAX_IOPS_PER_VOLUME

    Эти параметры задают минимум и максимум физических операций ввода-вывода в секунду на том диска для пула ресурсов.These settings are the minimum and maximum physical IO operations per second (IOPS) per disk volume for a resource pool. Эти параметры можно использовать для управления физическими операциями ввода-вывода, предоставленными для пользовательских потоков для данного пула ресурсов.You can use these settings to control the physical IOs issued for user threads for a given resource pool. Например, отдел продаж создает несколько отчетов в конце месяца большими пакетами.For example, the Sales department generates several end-of-month reports in large batches. Запросы в этих пакетах могут вызывать операции ввода-вывода, которые могут насытить дисковый объем и повлиять на производительность других рабочих нагрузок с более высоким приоритетом в базе данных.The queries in these batches can generate IOs that can saturate the disk volume and impact the performance of other higher priority workloads in the database. Для изолирования этой рабочей нагрузки можно установить MIN_IOPS_PER_VOLUME в 20 и MAX_IOPS_PER_VOLUME в 100 для пула ресурсов отдела продаж, что задаст уровень ввода-вывода, предоставляемый рабочей нагрузке.To isolate this workload, the MIN_IOPS_PER_VOLUME is set to 20 and the MAX_IOPS_PER_VOLUME is set to 100 for the Sales department resource pool, which controls the level of IOs that can be issued for the workload.

При настройке процессора или памяти сумма значений MIN всех пулов не может превышать 100 % ресурсов сервера.When configuring CPU or Memory, the sum of MIN values across all pools cannot exceed 100 percent of the server resources. Кроме того, при настройке ЦП и памяти значения MAX и END могут быть установлены в пределах от значения MIN до 100 включительно.In addition, when configuring CPU or Memory, MAX and CAP values can be set anywhere in the range between MIN and 100 percent inclusive.

Если в пуле определено ненулевое значение MIN, то эффективное значение MAX других пулов переопределяется.If a pool has a nonzero MIN defined, the effective MAX value of other pools is readjusted. Из 100 процентов вычитается минимальное настроенное значение MAX для пула и сумма значений MIN других пулов.The minimum of the configured MAX value of a pool and the sum of the MIN values of other pools is subtracted from 100 percent.

Некоторые основные понятия, описанные выше, проиллюстрированы в следующей таблице.The following table illustrates a few of the preceding concepts. В таблице показаны параметры внутреннего пула, пула по умолчанию и двух определяемых пользователем пулов.The table shows the settings for the internal pool, the default pool, and two user-defined pools.

Имя пулаPool name Параметр MIN, %MIN % setting Параметр MAX, %MAX % setting Вычисляемое эффективное значение MAX, %Calculated effective MAX % Вычисляемый общий %Calculated shared % КомментарийComment
Внутренниеinternal 00 100100 100100 00 Фактическое значение MAX% и shared% неприменимы к внутреннему пулу.Effective MAX% and shared% are not applicable to the internal pool.
значение по умолчаниюdefault 00 100100 3030 3030 Эффективное значение MAX вычисляется следующим образом: min(100,100-(20+50)) = 30.The effective MAX value is calculated as: min(100,100-(20+50)) = 30. Вычисляемый общий процентный показатель — это фактическое значение MAX - MIN = 30.The calculated shared % is effective MAX - MIN = 30.
Пул 1Pool 1 2020 100100 5050 3030 Эффективное значение MAX вычисляется так: min(100,100-50)=50.The effective MAX value is calculated as: min(100,100-50) = 50. Вычисляемый общий процентный показатель — это фактическое значение MAX - MIN = 30.The calculated Shared % is Effective MAX - MIN = 30.
Пул 2Pool 2 5050 7070 7070 2020 Эффективное значение MAX вычисляется так: min(70,100-20)=70.The effective MAX value is calculated as: min(70,100-20) = 70. Вычисляемый общий процентный показатель — это эффективное значение MAX-MIN=20.The calculated Shared % is Effective MAX - MIN = 20.

Приведенные ниже формулы используются для вычисления фактического значения MAX% и общего процентного показателя в таблице выше.The following formulas are used for calculating the effective MAX% and the shared % in the table above:

  • Min(X,Y) — это наименьшие значения X и Y.Min(X,Y) means the smaller value of X and Y.

  • Sum(X) — это сумма значений X всех пулов.Sum(X) means the sum of value X across all pools.

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

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

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

Пользуясь приведенной выше таблицей в качестве примера, можно далее проиллюстрировать изменения, которые вносятся при создании еще одного пула.Using the preceding table as an example, we can further illustrate the adjustments that take place when another pool is created. Этот пул — Пул 3, имеющий значение MIN %, равное 5.This pool is Pool 3 and has a MIN % setting of 5.

Имя пулаPool name Параметр MIN, %MIN % setting Параметр MAX, %MAX % setting Вычисляемое эффективное значение MAX, %Calculated effective MAX % Вычисляемый общий %Calculated shared % КомментарийComment
Внутренниеinternal 00 100100 100100 00 Фактическое значение MAX% и shared% неприменимы к внутреннему пулу.Effective MAX % and shared % are not applicable to the internal pool.
значение по умолчаниюdefault 00 100100 2525 2525 Эффективное значение MAX вычисляется следующим образом: min(100,100-(20+50+5)) = 25.The effective MAX value is calculated as: min(100,100-(20+50+5)) = 25. Вычисляемый общий процентный показатель — это фактическое значение MAX - MIN = 25.The calculated shared % is Effective MAX - MIN = 25.
Пул 1Pool 1 2020 100100 4545 2525 Эффективное значение MAX вычисляется так: min(100,100-55)=45.The effective MAX value is calculated as: min(100,100-55) = 45. Вычисляемый общий процентный показатель — это фактическое значение MAX - MIN = 25.The calculated Shared % is Effective MAX - MIN = 25.
Пул 2Pool 2 5050 7070 7070 2020 Эффективное значение MAX вычисляется следующим образом: min(70,100-25) = 70.The effective MAX value is calculated as: min(70,100-25) = 70. Вычисляемый общий процентный показатель — это эффективное значение MAX-MIN=20.The calculated Shared % is effective MAX - MIN = 20.
Пул 3Pool 3 55 100100 3030 2525 Эффективное значение MAX вычисляется следующим образом: min(100,100-70) = 30.The effective MAX value is calculated as: min(100,100-70) = 30. Вычисляемый общий процентный показатель — это фактическое значение MAX - MIN = 25.The calculated Shared % is effective MAX - MIN = 25.

Общая часть пула показывает, куда могут помещаться доступные ресурсы, если они есть.The shared part of the pool is used to indicate where available resources can go if resources are available. Однако при потреблении ресурсов они помещаются в указанный пул и не являются общими.However, when resources are consumed they go to the specified pool and are not shared. Это позволяет более рационально использовать ресурсы в тех случаях, когда отсутствуют запросы в данный пул, и ресурсы, соответствующие этому пулу, можно сделать доступными для остальных пулов.This may improve resource utilization in cases where there are no requests in a given pool and the resources configured to the pool can be freed up for other pools.

Ниже приведены особые случаи конфигурации пулов.Some extreme cases of pool configuration are:

  • Во всех пулах заданы минимумы, которые в сумме дают 100% ресурсов сервера.All pools define minimums that in total represent 100 percent of the server resources. В этом случае фактические максимумы равны минимумам.In this case, the effective maximums are equal to minimums. Это аналогично разделению ресурсов сервера на непересекающиеся области независимо от потребления ресурсов внутри любого пула.This is equivalent to dividing the server resources into non-overlapping pieces regardless of resources are consumed inside any given pool.

  • У всех пулов минимумы равны нулю.All pools have zero minimums. Все пулы конкурируют за доступные ресурсы, и их окончательный размер основан на потреблении ресурсов в каждом пуле.All the pools compete for available resources and their final sizes are based on resource consumption in each pool. В формировании окончательного размера пула также играют роль другие факторы, например политики.Other factors such as policies play a role in shaping the final pool size.

В регуляторе ресурсов есть два стандартных пула ресурсов: внутренний пул и пул по умолчанию.Resource Governor predefines two resource pools, the internal pool and the default pool. Можно добавить дополнительные пулы.You can add additional pools.

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

Внутренний пул представляет ресурсы, используемые самим SQL ServerSQL Server .The internal pool represents the resources consumed by the SQL ServerSQL Server itself. Этот пул всегда содержит только внутреннюю группу, и пул нельзя изменить никаким способом.This pool always contains only the internal group, and the pool is not alterable in any way. Потребление ресурсов во внутреннем пуле не ограничивается.Resource consumption by the internal pool is not restricted. Любая рабочая нагрузка в пуле рассматривается как критическая для работы сервера, и регулятор ресурсов позволяет внутреннему пулу передавать нагрузку на другие пулы, даже если это приводит к нарушению ограничений, заданных для этих пулов.Any workloads in the pool are considered critical for server function, and Resource Governor allows the internal pool to pressure other pools even if it means the violation of limits set for the other pools.

Примечание

Потребление ресурсов внутреннего пула и внутренней группы не вычитается из общего потребления ресурсов.The internal pool and internal group resource usage is not subtracted from the overall resource usage. Процентные показатели вычисляются на основе общего объема доступных ресурсов.Percentages are calculated from the overall resources available.

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

Пул по умолчанию — это первый стандартный пользовательский пул.The default pool is the first predefined user pool. До какой-либо настройки пул по умолчанию содержит только группу по умолчанию.Prior to any configuration the default pool only contains the default group. Пул по умолчанию нельзя создать или удалить, но его можно изменить.The default pool cannot be created or dropped but it can be altered. Пул по умолчанию может содержать определяемые пользователем группы в дополнение к группе по умолчанию.The default pool can contain user-defined groups in addition to the default group. Начиная с версии SQL Server 2016 (13.x);SQL Server 2016 (13.x) доступны такие пулы ресурсов по умолчанию: пул для стандартных операций SQL ServerSQL Server и пул для внешних процессов, например для выполнения R-скриптов.Beginning with SQL Server 2016 (13.x);SQL Server 2016 (13.x) there is a default resource pool for routine SQL ServerSQL Server operations, and a default external resource pool for external processes, such as executing R scripts.

Примечание

Группу по умолчанию можно изменить, но ее нельзя переместить за пределы пула по умолчанию.The default group is alterable but it cannot be moved out of the default pool.

Внешний пулExternal Pool

Пользователи могут определить внешний пул, чтобы определить ресурсы для внешних процессов.Users can define an external pool to define resources for the external processes. В отношении служб R он применяется для rterm.exe, BxlServer.exe и порожденных ими процессов.For R Services, this specifically governs rterm.exe, BxlServer.exe, and other processes spawned by them.

Определяемые пользователем пулы ресурсовUser-Defined Resource Pools

Определяемые пользователем пулы ресурсов — это пулы ресурсов, создаваемые для конкретных рабочих нагрузок в вашей среде.User-defined resource pools are those that you create for specific workloads in your environment. В регуляторе ресурсов предусмотрены инструкции DDL для создания, изменения и удаления пулов ресурсов.Resource Governor provides DDL statements for creating, changing, and dropping resource pools.

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

Описание задачиTask Description СтатьяArticle
Описывает процесс создания пула ресурсов.Describes how to create a resource pool. Создание пула ресурсовCreate a Resource Pool
Описывает, как изменить параметры пула ресурсов.Describes how to change resource pool settings. Изменение параметров пула ресурсовChange Resource Pool Settings
Описывает, как удалить пул ресурсов.Describes how to delete a resource pool. Удаление пула ресурсовDelete a Resource Pool

См. также:See Also

регулятор ресурсов Resource Governor
Группа рабочей нагрузки регулятора ресурсов Resource Governor Workload Group
Функция-классификатор регулятора ресурсов Resource Governor Classifier Function
Настройка регулятора ресурсов с помощью шаблона Configure Resource Governor Using a Template
Просмотр свойств регулятора ресурсовView Resource Governor Properties