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


Параметр конфигурации сервера «affinity mask»

Примечание

В будущей версии Microsoft SQL Server этот компонент будет удален. Не используйте его при работе над новыми приложениями и как можно быстрее измените приложения, в которых он в настоящее время используется. Используйте вместо него инструкцию ALTER SERVER CONFIGURATION (Transact-SQL).

Для одновременного выполнения множества задач Microsoft Windows иногда распределяет потоки процессов между разными процессорами. Хотя с точки зрения операционной системы эти действия эффективны, они могут снизить производительность SQL Server при больших системных нагрузках, так как данные кеша каждого процессора будут постоянно обновляться. В этих условиях назначение процессорам определенных потоков может повысить производительность, устраняя повторную загрузку процессоров и уменьшая количество переносов потоков между процессорами (а значит, уменьшая число переключений контекста). Такая связь между потоком и процессором называется соответствием процессоров.

SQL Server поддерживает соответствие процессоров с помощью двух параметров: affinity mask (также известен как CPU affinity mask) и affinity I/O mask. Дополнительные сведения о параметре affinity I/O mask см. в разделе Параметр конфигурации сервера "affinity Input-Output mask". Поддержка соответствия процессоров и ввода-вывода для серверов с числом ЦП от 33 до 64 требует также использования параметров Параметр конфигурации сервера "affinity64 mask" и Параметр конфигурации сервера "affinity64 Input-Output mask"соответственно.

Примечание

Поддержка соответствия процессоров для серверов с числом процессоров от 33 до 64 доступна только в 64-разрядных версиях операционных систем.

Параметр affinity mask, который существовал в предыдущих версиях SQL Server, динамически управляет соответствием ЦП.

В SQL Server параметр affinity mask можно настраивать без последующей перезагрузки экземпляра SQL Server. После установки параметра конфигурации с помощью хранимой процедуры sp_configure необходимо выполнить инструкцию RECONFIGURE или RECONFIGURE WITH OVERRIDE. При использовании SQL Server Express изменение параметра affinity mask требует перезагрузки.

Изменения масок сходства происходят динамически, что дает пользователям возможность запускать планировщики процессоров, связывающие процессы в SQL Server, и завершать их работу по требованию. Это может происходить при изменении условий работы сервера. Например, если к серверу добавляется новый экземпляр SQL Server, то может потребоваться внести изменения в параметр affinity mask, чтобы перераспределить нагрузку процессоров.

Изменения битовых масок соответствия требуют, чтобы SQL Server запустил новый планировщик процессора и завершил работу текущего планировщика. После этого новые пакеты могут обрабатываться новым или оставшимися планировщиками.

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

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

При добавлении или удалении нового планировщика постоянные системные задачи, например lockmonitor, checkpoint, поток системной задачи (обрабатывающей DTC) и обработчик сигналов, продолжают работать на планировщике, пока сервер находится в режиме «в сети». Эти постоянные системные задачи не перемещаются динамически. Чтобы перераспределить нагрузку процессора для этих системных задач между планировщиками, необходимо перезапустить экземпляр SQL Server. Если SQL Server попытается завершить работу планировщика, связанного с постоянной системной задачей, задача будет продолжать выполняться, даже если планировщик будет работать в режиме "вне сети" (и не будет перенесена). Этот планировщик привязан к процессорам измененной маской сходства, он не должен нагружать процессор, с которым он был приведен в соответствие до изменения. Использование дополнительных планировщиков, работающих в режиме «вне сети», не должно значительно влиять на нагрузку системы. Если это не так, то для повторной настройки этих задач нужно будет перезагрузить сервер баз данных.

Маска привязки ввода-вывода напрямую влияет на задачи привязки ввода-вывода (например, на lazywriter и logwriter). Если задачи lazywriter и logwriter не приведены в соответствие с процессорами, они следуют общим правилам постоянных задач, например lockmonitor или checkpoint.

Чтобы гарантировать, что новая маска сходства допустима, команда RECONFIGURE проверяет, чтобы нормальные соответствия процессоров и ввода-вывода были взаимно исключающими. Если это не так, в сеанс клиента и журнал ошибок SQL Server выводится сообщение об ошибке, указывающее, что такой параметр не рекомендуется. Запуск с параметром RECONFIGURE WITH OVERRIDE позволяет соответствиям процессоров и ввода-вывода не быть взаимоисключающими.

Если указать маску сходства, которая попытается сопоставить поток несуществующему процессору, то команда RECONFIGURE отправит сообщение об ошибке в сеанс клиента и в журнал ошибок SQL Server. Использование параметра RECONFIGURE WITH OVERRIDE в этом случае ничего не изменит, и будет создано еще одно сообщение об ошибке.

Вы также можете исключить SQL Server действия из процессоров, назначенных определенным назначениям рабочей нагрузки операционной системой Windows 2000 или Windows Server 2003. Если установить значение бита, представляющего процессор, в 1, этот процессор будет выбран ядром СУБД SQL Server для назначения потоков. Если задано значение affinity mask 0 (по умолчанию), алгоритмы планирования Microsoft Windows 2000 или Windows Server 2003 задают сходство потока. Если задано affinity mask любое ненулевое значение, SQL Server сходство интерпретирует значение как битовую маску, указывающую процессоры, подходящие для выбора.

Отделяя потоки SQL Server от запуска на определенных процессорах, Microsoft Windows 2000 или Windows Server 2003 может лучше оценить обработку системных процессов, характерных для Windows. Например, на сервере с 8 процессорами, на котором работают два экземпляра SQL Server (экземпляры A и B), системный администратор может использовать параметр affinity mask для назначения первого набора из 4 процессоров экземпляру A и второго набора из 4 процессоров экземпляру B. Чтобы выполнить настройку больше чем для 32 процессоров, задавайте и параметр affinity mask, и параметр affinity64 mask. Возможны следующие значения affinity mask.

  • Однобайтовое значение affinity mask обеспечивает управление компьютерами, содержащими до 8 процессоров.

  • Двухбайтовое значение affinity mask обеспечивает управление компьютерами, содержащими до 16 процессоров.

  • Трехбайтовое значение affinity mask обеспечивает управление компьютерами, содержащими до 24 процессоров.

  • Четырехбайтовое значение affinity mask обеспечивает управление компьютерами, содержащими до 32 процессоров.

  • Для управления большим числом процессоров для первых 32 процессоров используется четырехбайтовая маска соответствия, а для оставшихся — четырехбайтовое значение параметра affinity64 mask.

Поскольку задание SQL Server сходства процессоров является специализированной операцией, рекомендуется использовать ее только при необходимости. В большинстве случаев соответствие по умолчанию, назначаемое Microsoft Windows 2000 или Windows Server 2003, гарантирует оптимальную производительность. При задании масок соответствия следует также учитывать требования к ЦП других приложений. Дополнительные сведения см. в документации по операционной системе Windows.

Примечание

Для просмотра и анализа нагрузки на отдельные процессоры можно использовать системный монитор Windows.

При задании параметра affinity I/O mask его необходимо использовать в сочетании с параметром конфигурации affinity mask. Не включайте один и тот же ЦП и в параметре affinity mask, и в параметре affinity I/O mask. Биты, соответствующие каждому ЦП, должны находиться в одном из трех состояний.

  • значение 0 для обоих параметров, affinity mask и affinity I/O mask;

  • значение 1 для параметра affinity mask и 0 для параметра affinity I/O mask;

  • значение 0 для параметра affinity mask и 1 для параметра affinity I/O mask.

Внимание!

Не используйте маску привязки процессоров в операционной системе Windows и маску привязки в SQL Serverодновременно. Эти настройки предназначены для достижения одного результата, и если их значения будут несогласованными, результат может быть непредсказуем. Сходство процессоров SQL Server лучше всего настраивать с помощью параметра хранимой процедуры sp_configure в SQL Server.

Пример

Если процессоры 1, 2 и 5 выбраны как доступные путем установки битов 1, 2 и 5 равными 1, а биты 0, 3, 4, 6 и 7 установлены равными 0, то в качестве значения параметра affinity mask должно быть указано шестнадцатеричное значение 0x26 или его десятичный эквивалент 38 . Биты нумеруются справа налево. В параметре affinity mask начинается отсчет процессоров от 0 до 31, поэтому в следующем примере счетчик 1 представляет второй процессор на сервере.

sp_configure 'show advanced options', 1;  
RECONFIGURE;  
GO  
sp_configure 'affinity mask', 38;  
RECONFIGURE;  
GO  

Это значения affinity mask для компьютера с 8 процессорами.

Десятичное значение Битовая маска Количество допустимых потоков SQL Server в процессорах
1 00000001 0
3 00000011 0 и 1
7 00000111 0, 1 и 2
15 00001111 0, 1, 2 и 3
31 00011111 0, 1, 2, 3 и 4
63 00111111 0, 1, 2, 3, 4 и 5
127 01111111 0, 1, 2, 3, 4, 5 и 6
255 11111111 0, 1, 2, 3, 4, 5, 6 и 7

Параметр affinity mask является дополнительным. Если для изменения параметра используется системная хранимая процедура sp_configure, изменить его можно affinity mask только в том случае, если параметр show advanced options имеет значение 1. После выполнения команды Transact-SQL RECONFIGURE новый параметр вступает в силу немедленно, не требуя перезапуска экземпляра SQL Server.

Доступ к неоднородной памяти (NUMA)

При использовании аппаратного доступа к неоднородной памяти (NUMA), если установлена маска сходства, каждый планировщик в узле сопоставляется своему собственному ЦП. Когда маска сходства не установлена, каждый планировщик соответствует группе процессоров в пределах узла NUMA, и планировщик, сопоставленный с узлом NUMA N1, может планировать работу на любом процессоре в узле, но не на процессорах, связанных с другим узлом.

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

Вопросы лицензирования

Динамическое изменение схожести жестко ограничивается лицензированием по процессорам. SQL Server не допускает настройки параметров маски сходства, нарушающих политику лицензирования.

Запуск

Если указанная маска сходства нарушает политику лицензирования во время запуска SQL Server или во время присоединения базы данных, уровень ядра завершит процесс запуска или операцию подключения и восстановления базы данных, а затем сбросит значение выполнения sp_configure для маски сопоставления до нуля, выдав сообщение об ошибке в журнал ошибок SQL Server.

Перенастройка

Если указанная маска сходства нарушает политику лицензирования при выполнении команды Transact-SQL RECONFIGURE, то сообщение об ошибке с требованием к администратору базы данных перенастроить маску сходства отправляется в сеанс клиента и в журнал ошибок SQL Server. В этом случае команда RECONFIGURE WITH OVERRIDE принята не будет.

См. также:

Наблюдение за использованием ресурсов (системный монитор)
RECONFIGURE (Transact-SQL)
Параметры конфигурации сервера (SQL Server)
sp_configure (Transact-SQL)
ALTER SERVER CONFIGURATION (Transact-SQL)