MSSQL 17 использует только половину доступных процессоров - PullRequest
0 голосов
/ 25 февраля 2019

В настоящее время я тестирую виртуальную машину с установленным MSSQL 17.Он имеет 16 ядер в двух разъемах и 100 ГБ оперативной памяти.

Когда я запускаю тест, работают только 8 ядер.Ядра второго узла не используются MSSQL.

Все ядра подключены к MSSQL.Конфигурация почти по умолчанию (максимальная степень параллелизма установлена ​​на 4)

Почему не используются ядра второго узла?

1 Ответ

0 голосов
/ 25 февраля 2019

Похоже, у вас есть стандартная версия и ограничение ее.

Это позволяет только 4 сокета.Если ваша виртуальная машина сконфигурирована как 8 сокетов x 2 ядра, вы увидите только половину из них

. Вы можете проверить это, выполнив:

SELECT @@VERSION

Обходной путь - перенастроить виртуальную машину для представления ядер.как: 1 сокет x 16 ядер, или 2x8 или 4x4

Подробнее об ограничениях здесь: Издания и поддерживаемые функции

Обновление:

  • Когда я запускаю тест, работают только 8 ядер.
  • Конфигурация почти по умолчанию (Макс. Степень параллелизма установлена ​​на 4)

Другая возможная причина заключается в том, что в тесте используется одно или несколько соединений.Сеансы SQL Server привязаны к рабочим, а рабочие привязаны к планировщикам.

Таким образом, речь идет о такой цепочке: Соединение-> Сеанс-> Рабочий-> Планировщик-> Ядро.

В настоящее время MAXDOP установлен в4, это означает, что один сеанс может загружать максимум 4 ядра, а 2 сеанса могут загружать 8 ядер.

Установив для MAXDOP значение 16, вы разрешите многопоточность использовать все процессоры

USE [yourDB]
ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 16;

Но опять же, ваш сеанс привязан к рабочему, а рабочий связан с каким-то одним ядром

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...