Поделиться через


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

Область применения: SQL Server Управляемый экземпляр SQL Azure

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

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

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

Пул ресурсов представляет физические ресурсы сервера, например ЦП, памяти и ввода-вывода. В зависимости от конфигурации ресурсы в пуле ресурсов можно резервировать или совместно использовать с другими пулами. Конфигурация пула определяется путем указания одного или нескольких следующих параметров для каждого типа ресурса (ЦП, памяти и физического ввода-вывода):

MIN_CPU_PERCENT и MAX_CPU_PERCENT

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

Например, предположим, что отделы продаж и маркетинга в компании используют один и тот же экземпляр SQL Server. Отдел продаж использует рабочую нагрузку с высокой нагрузкой на ЦП и самыми важными запросами. Отдел маркетинга также имеет рабочую нагрузку с интенсивным ЦП, но имеет более низкий приоритет запросов. Создав отдельный пул ресурсов для каждого отдела, можно назначить минимальный процент ЦП в 40 для пула ресурсов Sales и максимальный процент ЦП в 30 для пула ресурсов маркетинга. Эта конфигурация гарантирует, что рабочая нагрузка "Продажи" получает необходимые ресурсы ЦП, а рабочая нагрузка "Маркетинг" не влияет на требования ЦП рабочей нагрузки "Продажи".

Максимальный процент ЦП — это оппортунистическое максимальное значение. Если имеется доступная емкость ЦП, запросы используют все его, до 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, поскольку зарезервированная память может оставаться в пуле, даже если нет запросов в группах рабочей нагрузки, принадлежащих этому пулу. Будьте осторожны при использовании этого параметра, так как эта память недоступна для использования любым другим пулом, даже если нет активных запросов. Установка максимального значения памяти для пула означает, что при выполнении запросов в этом пуле они никогда не получают больше, чем этот процент общей памяти.

Для баз данных без таблиц, оптимизированных для памяти, память управляется MIN_MEMORY_PERCENT и MAX_MEMORY_PERCENT в частности памятью рабочей области запроса или предоставлением памяти выполнения запросов. Память буферного пула (страницы данных и индексов) всегда предоставляется всем пулам ресурсов и не зарезервирована или ограничена регулятором ресурсов. Дополнительные сведения о предоставлении памяти выполнения запросов см. в рекомендациях по предоставлению памяти. Дополнительные сведения об использовании пулов ресурсов с таблицами Memory-Optimized см. в статье Привязка базы данных с таблицами Memory-Optimized к пулу ресурсов.

AFFINITY

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

MIN_IOPS_PER_VOLUME и MAX_IOPS_PER_VOLUME

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

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

Регулятор ресурсов имеет два встроенных пула ресурсов: пул internal и пул default. Можно создать дополнительные определяемые пользователем пулы.

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

Пул internal управляет ресурсами, потребляемыми самим ядром СУБД. Этот пул всегда содержит только internal группу, и пул не может быть изменен каким-либо образом. Потребление ресурсов пулом internal не ограничено. Все рабочие нагрузки в пуле считаются критически важными для работы ядра СУБД. Регулятор ресурсов позволяет internal пулу оказывать давление на другие пулы, даже если это означает нарушение ограничений, установленных для других пулов.

Примечание.

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

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

default Изначально пул содержит только группу рабочей нагрузкиdefault. Вы не можете создать или удалить default пул, но его можно изменить. Пул default может содержать определяемые пользователем группы рабочих нагрузок в дополнение к default группе. Начиная с SQL Server 2016 (13.x), помимо default пула ресурсов для операций ядра СУБД, существует внешний default пул ресурсов специально для внешних процессов, таких как выполнение скриптов R.

Примечание.

Группу default можно изменить, но ее нельзя переместить из пула default .

Внешний пул

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

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

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

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

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

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

В следующих таблицах показана эта концепция. В этих таблицах LEAST(X, Y) означает меньшее значение X и Y. Все числовые значения — это проценты.

В первой таблице показаны параметры пула internal , пула default и двух пользовательских пулов.

Имя пула MIN MAX Effective MAX Shared % Комментарий
internal 0 100 100 0 Effective MAX и Shared % не применимы к пулу internal .
default 0 100 30 30 Effective MAX = LEAST(100, 100 - (20 + 50)) = 30
Shared % = Effective MAX - MIN = 30
Pool 1 20 100 50 30 Effective MAX = LEAST(100, 100 - 50) = 50
Shared % = Effective MAX - MIN = 30
Pool 2 50 70 70 20 Effective MAX = LEAST(70, 100 - 20) = 70
Shared % = Effective MAX - MIN = 20

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

Имя пула MIN MAX Effective MAX Shared % Комментарий
internal 0 100 100 0 Effective MAX и Shared % не применимы к пулу internal .
default 0 100 25 25 Effective MAX = LEAST(100, 100 - (20 + 50 + 5)) = 25
Shared % = Effective MAX - MIN = 25
Pool 1 20 100 45 25 Effective MAX = LEAST(100, 100 - (50 + 5))) = 45
Shared % = Effective MAX - MIN = 25
Pool 2 50 70 70 20 Effective MAX = LEAST(70, 100 - (20 + 5))) = 70
Shared % = Effective MAX - MIN = 20
Pool 3 5 100 30 25 Effective MAX = LEAST(100, 100 - (50 + 20))) = 30
Shared % = Effective MAX - MIN = 25

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

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

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

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

Пулы ресурсов могут управлять различными системными ресурсами. Дополнительные сведения см. в разделе CREATE RESOURCE POOL.

Для получения дополнительных примеров и полного пошагового руководства см. руководство: Примеры конфигурации регулятора ресурсов и передовые практики.

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

Регулятор ресурсов предоставляет инструкции DDL для создания, изменения и удаления пулов ресурсов.

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