Ограничения вычислительной емкости для разных выпусков SQL Server
Область применения: SQL Server
В этой статье рассматриваются ограничения емкости вычислений для выпусков SQL Server и их различия в физических и виртуализированных средах с одновременными многопоточных процессорами (SMT). На ЦП Intel SMT называется Hyper-Threading.
Обзор
Эта таблица поясняет обозначения из предыдущей схемы.
значение | Описание |
---|---|
0..1 | Ноль или один |
1 | Ровно один |
1..* | Один центр обработки данных |
0..* | Ноль или более |
1..2 | Один или два |
Дополнительный анализ
- У виртуальной машины (ВМ) есть как минимум один виртуальный процессор.
- Один или несколько виртуальных процессоров выделяются ровно одной виртуальной машине.
- Ноль или один виртуальный процессор сопоставляются с нулем или другим числом логических процессоров. При сопоставлении виртуальных процессоров с логическими процессорами:
- Один к нулю: представляет несвязанный логический процессор, не используемый гостевыми операционными системами.
- Один ко многим: представляет переполнение.
- Ноль ко многим: представляет отсутствие виртуальной машины в хост-системе. Поэтому в виртуальных машинах не используются никакие логические процессоры.
- Процессор сопоставляется с нулем или другим числом ядер. При сопоставлении сокетов к ядрам:
- Один к нулю: представляет пустой сокет. Микросхема не установлена.
- Один к одному: представляет одноядерный чип, установленный в сокете. Такое сопоставление сейчас встречается редко.
- Один ко многим: представляет многоядерный чип, установленный в сокете. Обычно используются значения 2, 4 и 8.
- Ядро сопоставляется с одним или двумя логическими процессорами. При сопоставлении ядер с логическими процессорами:
- Один к одному: SMT отключен.
- Один к двум: SMT включен.
Далее даны определения терминов, используемых в этой статье.
Поток или логический процессор — это один логический вычислительный модуль с точки зрения SQL Server, операционной системы, приложения или драйвера.
Ядром называется единица процессора. Оно может состоять из одного логического процессора или нескольких.
Физический процессор может содержать одно или несколько ядер. Физический процессор также называется процессорным пакетом или сокетом.
Ограничение числа логических ядер на узел NUMA до 64
Такие проблемы, как дампы стека на серверах с более чем 64 логическими процессорами на узел NUMA. Конфигурация BIOS или встроенного ПО может сократить количество логических ядер, представленных операционной системе, до максимум 64 логических процессоров на узел NUMA.
Внимание
Накопительное обновление 11 sql Server 2022 (16.x) представило критическое изменение, в котором ядро СУБД не запускается, если он обнаруживает более 64 логических ядер на узел NUMA.
Начиная с SQL Server 2022 (16.x) накопительного обновления 15 программа установки выдает предупреждение о том, что эта конфигурация не поддерживается и приведет к остановке и отключению службы ядро СУБД. Предупреждение также включается в журналы установки.
Вы можете уменьшить количество логических ядер на узел NUMA на виртуальной машине Azure, отключив SMT. Для экземпляров SQL Server без операционной системы можно уменьшить количество логических ядер с помощью параметров кластеризации sub-NUMA (SNC) или узлов на сокет (NPS).
Отключение SMT в виртуальной машине Azure
SQL Server имеет поддерживаемое ограничение в 64 логических ядер на узел NUMA. В некоторых случаях виртуальная машина серии Azure Mv3 может превысить это ограничение, что предотвращает запуск SQL Server или разрешение на запуск с низкой производительностью. Чтобы отключить SMT, внесите следующие изменения с помощью PowerShell и редактора реестра (reg.exe
). Перед редактированием не забудьте создать резервную копию реестра.
Проверьте количество логических ядер. SMT включен, если соотношение равно 2:1 (число логических ядер в два раза больше числа ядер).
Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
Отключите SMT со следующими двумя изменениями реестра, а затем перезагрузите виртуальную машину.
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 8264 /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f
Снова проверьте количество логических ядер. Число логических ядер должно соответствовать количеству ядер.
Get-CimInstance -ClassName Win32_Processor | Select-Object -Property "NumberOfCores", "NumberOfLogicalProcessors"
Сокращение количества логических ядер на экземплярах без операционной системы
В следующих таблицах описывается, как уменьшить количество логических ядер на экземплярах SQL Server без операционной системы.
На ЦП Intel можно включить кластеризацию sub-NUMA (SNC), ранее называемую Cluster-on-Die (CoD), что привело к двум доменам NUMA в одном физическом сокете.
Параметр конфигурации | Description |
---|---|
SNC отключен (по умолчанию) | Отключает кластеризацию sub-NUMA. |
ВключенА SNC | Включает кластеризацию sub-NUMA. |
На ЦП AMD можно включить различные узлы для каждого сокета (NPS).
Параметр конфигурации | Description |
---|---|
NPS0 |
В системе с двумя сокетами NUMA представляет собой один узел со всеми каналами памяти, пересекаемых по узлу. |
NPS1 (по умолчанию) |
Эта конфигурация представляет один узел NUMA на сокет. |
NPS2 |
Эта конфигурация представляет два узла NUMA на сокет, аналогичный SNC. |
NPS4 |
Эта конфигурация представляет четыре узла NUMA на сокет. |
Замечания
Системы с несколькими физическими процессорами или системами с физическими процессорами с несколькими ядрами и (или) SMT позволяют операционной системе одновременно выполнять несколько задач. Каждый поток выполнения представляется как логический процессор. Например, если на компьютере есть два четырехядерных процессора с поддержкой SMT и два потока на ядро, у вас есть 16 логических процессоров: 2 процессора x 4 ядра на процессор x 2 потока на ядро. Стоит отметить, что:
Вычислительные мощности логического процессора из одного потока ядра SMT меньше вычислительной емкости логического процессора из этого же ядра с отключенным SMT.
Вычислительные мощности двух логических процессоров в ядре SMT больше вычислительной емкости одного ядра с отключенным SMT.
Каждый выпуск SQL Server имеет два ограничения емкости вычислений:
Максимальное число сокетов (физических процессоров или процессорных пакетов)
Максимальное число ядер, обнаруженных операционной системой
Эти ограничения применяются к одному экземпляру SQL Server. Они представляют максимальную емкость вычислений, которую использует один экземпляр. Они не ограничивают сервер, на котором может быть развернут экземпляр. На самом деле развертывание нескольких экземпляров SQL Server на одном физическом сервере является эффективным способом использования вычислительной емкости физического сервера с большим количеством сокетов и (или) ядер, чем разрешено ограничения емкости.
В следующей таблице указаны ограничения емкости вычислений для одного экземпляра каждого выпуска SQL Server:
Выпуск SQL Server | Максимальная емкость вычислений для одного экземпляра (SQL Server ядро СУБД) | Максимальная емкость вычислительных ресурсов для одного экземпляра (AS, RS) |
---|---|---|
Выпуск Enterprise: лицензирование на основе ядра 1 | Максимальное значение, поддерживаемое операционной системой | Максимальное значение, поддерживаемое операционной системой |
разработчик. | Максимальное значение, поддерживаемое операционной системой | Максимальное значение, поддерживаемое операционной системой |
Стандартные | Ограничение: меньшее из 4 процессоров и 24 ядер | Ограничение: меньшее из 4 процессоров и 24 ядер |
Express | Ограничение: меньшее из 1 процессора и 4 ядер | Ограничение: меньшее из 1 процессора и 4 ядер |
1 Выпуск Enterprise с лицензированием server+ Client Access License (CAL) ограничен 20 ядрами на экземпляр SQL Server. (Это лицензирование недоступно для новых соглашений.) Нет ограничений в модели лицензирования сервера на основе ядра.
В виртуальном окружении вычислительная емкость ограничена количеством логических процессоров, а не ядер. Причина заключается в том, что архитектура процессора не отображается гостевым приложениям.
Например, сервер с четырьмя сокетами, заполненными четырехядерными процессорами, и возможность включения двух потоков SMT на ядро содержит 32 логических процессора с поддержкой SMT. Но он содержит только 16 логических процессоров с отключенным SMT. Эти логические процессоры можно сопоставить с виртуальными машинами на сервере. Вычислительная нагрузка виртуальных машин на данный логический процессор сопоставляется одному потоку выполнения в физическом процессоре на сервере.
Вы можете отключить SMT, если производительность каждого виртуального процессора важна. Вы можете настроить SMT с помощью параметра BIOS для процессора во время настройки BIOS, но обычно это операция с областью действия сервера, которая влияет на все рабочие нагрузки, выполняемые на сервере. Вы можете рассмотреть возможность разделения рабочих нагрузок, выполняемых в виртуализированных средах, от рабочих нагрузок, которые будут использовать повышение производительности SMT в физической операционной среде.
Связанный контент
- Выпуски и поддерживаемые функции SQL Server 2022
- Спецификации максимальной емкости для SQL Server
- Руководство по установке SQL Server
Получение справки
- Идеи об SQL. Есть рекомендации по улучшению SQL Server?
- Вопросы и ответы по продуктам Майкрософт (SQL Server)
- DBA Stack Exchange (тег sql-server): вопросы о SQL Server
- Stack Overflow (тег sql-server): ответы на вопросы о разработке SQL
- Reddit: общие сведения о SQL Server
- Условия лицензии и информация о Microsoft SQL Server
- Варианты поддержки для бизнес-пользователей
- Дополнительная справка и отзывы по SQL Server
Примите участие в разработке документации по SQL
Знаете ли вы, что содержимое SQL можно изменить самостоятельно? Это не только улучшит нашу документацию, но и даст вам статус участника в создании этой страницы.
Дополнительные сведения см. в разделе Участие в работе над документацией по SQL Server.