Конфигурация сервера: маска сходства
Область применения: 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
принимается.