SQL Server не использует все ядра / потоки процессора

15

После обновления оборудования нашего SQL Server мы заметили в диспетчере задач Windows, что экземпляр SQL использует только половину доступных ему потоков:

Диспетчер задач,

На сервере установлено следующее аппаратное и программное обеспечение:

  • Windows 2008 R2 Enterprise 64bit SP1
  • Intel Xeon E7-4870 - 4 процессора (40 ядер, 80 потоков)
  • Microsoft SQL Server 2012 Enterprise Edition (64-разрядная версия)

Бег select cpu_count from sys.dm_os_sys_infoвозвращает 40.

ОС видит все 80 потоков.

Почему используется только половина вычислительной мощности сервера?

На двух серверах установлено одинаковое оборудование и программное обеспечение, и они оба работают одинаково.

Джон Сайгель
источник

Ответы:

23

В журнале ошибок SQL Server должно быть указано, почему. Я нашел это в системе клиента (на самом деле просто вставил сообщение для Google сок):

SQL Server обнаружил 4 сокета с 8 ядрами на сокет и 16 логическими процессорами на сокет, всего 64 логических процессора; использование 40 логических процессоров на основе лицензирования SQL Server. Это информационное сообщение; От пользователя не потребуется никаких действий.

Я получил вероятное объяснение здесь :

Для клиентов с Software Assurance для существующих лицензий SQL EE Server (или доступа к ним в соответствии с текущими корпоративными соглашениями в течение срока действия) была создана версия Enterprise Edition, позволяющая им обновиться до SQL Server 2012. Эта версия имеет технические ограничения, ограничивающие экземпляр до используя только 20 процессорных ядер (40 потоков процессора с Hyperthreading).

Резюме: в журнале ошибок, издание будет сообщаться либо как Enterprise Editionили Enterprise Edition: Core-based Licensing. Если указано первое, как в случае вышеупомянутой клиентской системы, вам нужно будет получить лицензию на ядро, чтобы использовать все доступные ядра.

Если это не так, и у вас уже есть лицензия на все ядра, проверьте настройки маски сродства, особенно, если они были установлены, и базовое оборудование было обновлено.

Джон Сайгель
источник
У нас была похожая проблема. Мы строим виртуальную машину с 1 сокетом и 32 ядрами. Sql будет распознавать только 8 процессоров. Мы переключаем его на 8 розеток и 4 ядра, проблема ушла. Мы работали с Enterprise Edit на SQL 2008r2 на Windows 2008r2.
user3799984
У меня была такая же проблема со стандартной версией. Мы использовали 8 розеток, а остальные не использовали. Все, что нам нужно было сделать - это сменить виртуальную машину и настроить 4 сокета на 2 ядра.
Николя де Фонтене
7

Посмотрите в ОШИБКУ с момента первого запуска SQL Server. Он скажет вам, сколько процессоров он использует, и, возможно, почему. Если вы можете опубликовать файл ERRORLOG где-нибудь, это поможет увидеть, что происходит.

mrdenny
источник
3

Я видел это в другом посте Аджмера Дхаривала:

Даже если у вас есть Enterprise Edition, если применяемая модель лицензирования основана на Server + Client Access License (CAL), то сервер ограничен 20 физическими ядрами на экземпляр

Дом
источник