Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: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 процессорами требует, чтобы вы также использовали параметры конфигурации сервера 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 создает новый планировщик и добавляет его в список стандартных планировщиков. Новый планировщик используется только для обработки новых входящих пакетов. Текущие пакеты по-прежнему выполняются в том же планировщике. Рабочие потоки переходят на новый планировщик по мере освобождения или по мере создания новых рабочих потоков.
Для завершения работы планировщика необходимо, чтобы все пакетные задания в планировщике завершили свои операции и завершились. Выключенный планировщик помечается как недоступный, чтобы ему не назначалось новое пакетное задание.
Независимо от того, добавляете вы новый планировщик или удаляете его, постоянные системные задачи, такие как монитор блокировок, контрольная точка, поток системных задач (обрабатывающий DTC) и процесс обработки сигналов, продолжают выполняться на планировщике, пока сервер работает. Эти постоянные системные задачи не переносятся динамически. Для перераспределения процессорной нагрузки этих задач между планировщиками необходимо перезапустить экземпляр SQL Server. Если SQL Server попытается отключить планировщик, связанный с постоянной системной задачей, задача продолжит выполняться на отключенном планировщике (без миграции). Этот планировщик привязан к процессорам, указанным в изменённой маске привязки, и не создаёт нагрузку на процессор, к которому он был привязан до изменения. Использование дополнительных планировщиков, работающих в режиме "вне сети", не должно значительно влиять на нагрузку системы. Если это так, требуется перезапустить сервер базы данных, чтобы перенастроить эти задачи на планировщиках, доступных при изменённой маске аффинитета.
Не настраивайте значения конфигурации SQL Server affinity mask и 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 ЦП экземпляру A, а второй набор из 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 не принимается.