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


Конфигурация сервера: маска сходства

Область применения: SQL Server

Примечание.

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

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

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

Примечание.

Поддержка соответствия процессоров для серверов с числом процессоров от 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 создает новый планировщик и добавляет его в список стандартных планировщиков. Новый планировщик используется только для обработки новых входящих пакетов. Текущие пакеты обрабатываются старым планировщиком. Рабочие потоки переходят на новый планировщик по мере освобождения или по мере создания новых рабочих потоков.

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

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

Не устанавливайте affinity mask значения конфигурации SQL Server для использования одних и affinity I/O mask того же ЦП. Производительность может возникнуть, если вы решили привязать процессор для планирования рабочих потоков SQL Server и обработки операций ввода-вывода. Поэтому убедитесь, что в конфигурации указаны разные процессоры. Та же рекомендация применяется к affinity64 mask и affinity64 I/O mask. Чтобы убедиться, что не affinity mask перекрывается affinity I/O 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 позволяют сходство ЦП и операций ввода-вывода перекрываться и не быть взаимоисключающими.

Задачи сходства ввода-вывода (например, ленивый модуль записи и запись журналов) напрямую влияют на affinity I/O maskзадачи сходства ввода-вывода . Если задачи 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 ЦП экземпляру А и второму набору из 4 экземпляра B. Чтобы настроить более 32 процессоров, задайте и affinity mask те, и .affinity64 mask Возможны следующие значения affinity mask.

Байты в маске Число процессоров
1-байт До 8 ЦП
2-байт До 16 ЦП
3-байт До 24 ЦП
4-байт До 32 ЦП

Чтобы покрыть более 32 ЦП, настройте 4-байт affinity mask для первых 32 ЦП и до 4-байтов affinity64 mask для оставшихся ЦП.

Так как настройка сходства процессора SQL Server является специализированной операцией, используйте ее только при необходимости. В большинстве случаев сходство 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 и не настраивайте его affinity mask в SQL Server. Эти параметры пытаются достичь того же результата, и если конфигурации несогласованы, у вас могут быть непредсказуемые результаты. Сопоставление ЦП SQL Server лучше всего настроено с помощью sp_configure параметра в SQL Server.

Примеры

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

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC 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 задано, каждый планировщик в узле привязывается к собственному ЦП. affinity mask Если параметр не задан, каждый планировщик привязан к группе ЦП в узле NUMA, а планировщик, сопоставленный с узлом NUMAN1, может запланировать работу на любом ЦП в узле, но не на ЦП, связанном с другим узлом.

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

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

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

Запуск

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

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

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