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

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

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

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

SQL Server поддерживает схожесть процессоров с помощью двух параметров affinity mask: affinity mask (известный как CPU affinity mask) и affinity I/O mask. Дополнительные сведения о параметре affinity I/O mask см. в разделе Параметр конфигурации сервера «affinity I/O mask». Поддержка соответствия процессоров и ввода-вывода для серверов с числом ЦП от 33 до 64 требует также использования параметров Параметр конфигурации сервера «affinity64 mask» и Параметр конфигурации сервера «affinity64 I/O 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 не позволяет использовать любые конфигурации параметров affinity mask, нарушающие политику лицензирования.

Запуск

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

Повторная настройка

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

См. также

Справочник

RECONFIGURE (Transact-SQL)

sp_configure (Transact-SQL)

ALTER SERVER CONFIGURATION (Transact-SQL)

Основные понятия

Наблюдение за использованием ресурсов (системный монитор)

Параметры конфигурации сервера