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

Приведенные ниже три понятия лежат в основе понимания работы регулятора ресурсов.

  • Пулы ресурсов. При установке SQL Server 2008 создается два пула ресурсов (внутренний и по умолчанию). Кроме того, регулятор ресурсов поддерживает определяемые пользователями пулы ресурсов.

  • Группы рабочей нагрузки. При установке SQL Server 2008 создается две группы рабочей нагрузки (внутренняя и по умолчанию), которые сопоставляются с соответствующими пулами ресурсов. Кроме того, регулятор ресурсов поддерживает определяемые пользователями группы рабочей нагрузки.

  • Классификация. Есть внутренние правила классификации входящих запросов и перенаправления их в группы рабочей нагрузки. Кроме того, регулятор ресурсов поддерживает определяемую пользователем функцию-классификатор для реализации правил классификации.

ПримечаниеПримечание

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

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

  • Имеется входящее соединение с сеансом (сеанс 1 из n).

  • Сеанс классифицирован (классификация).

  • Рабочая нагрузка сеанса направляется в группу рабочей нагрузки, например в группу 4.

  • Группа рабочей нагрузки использует пул ресурсов, с которым она связана, например Пул 2.

  • Пул ресурсов предоставляет или ограничивает доступ к ресурсам, которые требуются приложению, например Приложению 3.

Функциональные компоненты регулятора ресурсов

Пулы ресурсов

Пул ресурсов, или пул, представляет на сервере физические ресурсы. Пул можно считать виртуальным экземпляром SQL Server внутри экземпляра SQL Server.

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

  • MIN или MAX для ЦП;

  • MIN или MAX для памяти.

Значения MIN и MAX представляют минимальную гарантированную доступность ресурса пула и максимальный размер пула соответственно для каждого из этих ресурсов.

Сумма значений MIN всех пулов не может превышать 100 % ресурсов сервера. Значение MAX может быть любым, от MIN до 100% включительно.

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

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

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

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

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

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

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

Имя пула

Параметр MIN, %

Параметр MAX, %

Вычисляемое эффективное значение MAX, %

Вычисляемый общий %

Комментарии

Внутренние

0

100

100

0

Фактическое значение MAX% и shared% неприменимы к внутреннему пулу.

умолчание

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.

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

Имя пула

Параметр MIN, %

Параметр MAX, %

Вычисляемое эффективное значение MAX, %

Вычисляемый общий %

Комментарии

Внутренние

0

100

100

0

Фактическое значение MAX% и shared% неприменимы к внутреннему пулу.

значение по умолчанию

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% ресурсов сервера. В этом случае фактические максимумы равны минимумам. Это аналогично разделению ресурсов сервера на непересекающиеся области независимо от потребления ресурсов внутри любого пула.

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

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

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

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

ПримечаниеПримечание

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

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

Пул по умолчанию — это первый стандартный пользовательский пул. До какой-либо настройки пул по умолчанию содержит только группу по умолчанию. Пул по умолчанию нельзя создать или удалить, но его можно изменить. Пул по умолчанию может содержать определяемые пользователем группы в дополнение к группе по умолчанию.

ПримечаниеПримечание

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

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

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

Группы рабочей нагрузки

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

ПримечаниеПримечание

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

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

  • Отсутствуют критерии классификации запроса.

  • Предпринимается попытка классифицировать запрос в несуществующую группу.

  • Происходит общий сбой классификации.

В регуляторе ресурсов предусмотрены инструкции DDL для создания, изменения и удаления групп рабочей нагрузки. Дополнительные сведения см. в разделе DDL регулятора ресурсов и системные представления.

Классификация.

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

ПримечаниеПримечание

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

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

  • Создать и зарегистрировать функцию с помощью инструкции ALTER RESOURCE GOVERNOR. Дополнительные сведения см. в разделе ALTER RESOURCE GOVERNOR (Transact-SQL).

  • Обновить конфигурацию регулятора ресурсов с помощью инструкции ALTER RESOURCE GOVERNOR с параметром RECONFIGURE.

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

Важное примечаниеВажно!

Время ожидания клиентского сеанса истекает, если классифицирующая функция не завершается в течение заданного времени ожидания входа в систему. Время ожидания входа в систему — это клиентское свойство, поэтому серверу оно неизвестно. Долго выполняемая функция-классификатор может оставлять на сервере потерянные соединения в течение долгого времени. Важно создавать функции-классификаторы, выполнение которых завершается до истечения времени ожидания соединения.

Определяемая пользователем функция имеет следующие характеристики и поведение.

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

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

  • Если определяемая пользователем функция возвращает значение NULL, значение по умолчанию или имя несуществующей группы, то сеансу предоставляется контекст группы рабочей нагрузки по умолчанию. Кроме того, сеансу предоставляется контекст по умолчанию, если функция по какой-либо причине завершается неуспешно.

  • Функция должна быть определена на уровне сервера (базы данных master).

  • Обозначение определяемой пользователем функции-классификатора вступает в силу только после выполнения команды ALTER RESOURCE GOVERNOR RECONFIGURE.

  • Одновременно в качестве классифицирующей функции может быть обозначена только одна определяемая пользователем функция.

  • Определяемую пользователем функцию-классификатор можно удалить или изменить только после снятия с нее статуса «classifier».

  • В отсутствие определяемой пользователем функции-классификатора все сеансы классифицируются в группу по умолчанию.

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

Важное примечаниеВажно!

Рекомендуется включить на сервере выделенное административное соединение (DAC). Выделенное административное соединение не подлежит классификации регулятором ресурсов и может использоваться для наблюдения за неполадками классифицирующей функции и их устранения. Дополнительные сведения см. в разделе Использование выделенного административного соединения. Если выделенное административное соединение недоступно для устранения неполадок, другой вариант — перезапустить систему в однопользовательском режиме. Хотя однопользовательский режим не подлежит классификации, он не дает возможности выполнить диагностику классификации регулятора ресурсов, если тот запущен.

Процесс классификации

В контексте регулятора ресурсов процесс входа в сеанс состоит из следующих этапов.

  1. Проверка подлинности имени входа.

  2. Выполнение триггера LOGON.

  3. Классификация.

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

ПримечаниеПримечание

Сведения о выполнении классифицирующей функции и триггеров LOGON показаны в представлениях sys.dm_exec_sessions и sys.dm_exec_requests.