Похоже, у вас есть стандартная версия и ограничение ее.
Это позволяет только 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;
Но опять же, ваш сеанс привязан к рабочему, а рабочий связан с каким-то одним ядром