маска сходства (параметр конфигурации сервера)

Применимо к:SQL Server

Примечание.

Эта функция будет удалена в будущей версии 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 изменение маски сходства не требует перезапуска.

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

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

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

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

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

Не задавайте один и тот же процессор в параметрах affinity mask и affinity I/O mask SQL Server. Если связать процессор и с планированием рабочих потоков SQL Server, и с обработкой ввода-вывода, может снизиться производительность. Поэтому убедитесь, что в конфигурации указаны разные процессоры. Эта же рекомендация применима к параметрам affinity64 mask и affinity64 I/O mask. Чтобы гарантировать, что параметр affinity mask не перекрывается с параметром affinity IO mask, команда RECONFIGURE проверяет, чтобы нормальные соответствия процессоров и ввода-вывода были взаимно исключающими. Если это не так, то сообщение об ошибке будет отправлено в сеанс клиента и записано в журнал ошибок SQL Server, сигнализируя о том, что такая настройка не рекомендуется.

 Msg 5834, Level 16, State 1, Line 1
 The affinity mask specified conflicts with the IO affinity mask specified. Use the override option to force this configuration

Запуск с параметром RECONFIGURE WITH OVERRIDE позволяет соответствиям процессоров и ввода-вывода перекрываться и не быть взаимоисключающими.

Маска привязки ввода-вывода напрямую влияет на задачи привязки ввода-вывода (например, на lazy writer и log writer). Если задачи lazy writer и log writer не связаны в соответствие с процессорами, они следуют общим правилам постоянных задач, например lock monitor или checkpoint. Если указать маску сходства, которая попытается сопоставить поток несуществующему процессору, то команда RECONFIGURE отправит сообщение об ошибке в сеанс клиента и в журнал ошибок SQL Server. Использование параметра RECONFIGURE WITH OVERRIDE в этом случае ничего не изменит, и будет создано еще одно сообщение об ошибке.

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

Если потокам SQL Server запрещено выполняться на определенных процессорах, ОС Microsoft Windows может лучше обрабатывать процессы, характерные для 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, гарантирует оптимальную производительность. При задании масок сходства следует также учитывать требования к ЦП других приложений. Дополнительные сведения см. в документации по операционной системе 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.

Внимание

Не настраивайте CPU affinity в операционной системе Windows и affinity mask в 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. Позиции битов нумеруются справа налево.

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), если установлена маска сходства, каждый планировщик в узле привязывается к собственному ЦП. Когда параметр affinity mask не задан, каждый планировщик привязывается к группе процессоров в пределах узла NUMA и планировщик, сопоставленный с узлом NUMA N1, может планировать работу на любом процессоре в узле, но не на процессорах, связанных с другим узлом.

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

Проблемы с лицензированием

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

Запуск

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

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

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

Следующие шаги