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. Це інформаційне повідомлення; ніяких дій користувача не потрібно.

Звідси я отримав ймовірне пояснення :

Для клієнтів із забезпеченням програмного забезпечення на існуючих ліцензіях сервера SQL EE (або доступу до них відповідно до їх чинних корпоративних угод протягом терміну) була створена версія Enterprise Edition, яка дозволила їм оновитись до SQL Server 2012. Ця версія має технічні обмеження, що обмежують примірник на використовуючи лише 20 процесорних ядер (40 процесорних потоків з Hyperthreading).

Короткий зміст: у журналі помилок видання буде повідомлено як Enterprise Editionабо Enterprise Edition: Core-based Licensing. Якщо це говорить про колишню, як у випадку з вищезгаданою системою клієнтів, вам потрібно буде отримати базову ліцензію на використання всіх наявних ядер.

Якщо це не так, і ви вже отримали ліцензію на всі ядра, перевірте налаштування маски спорідненості, особливо, якщо вони були встановлені, і базове обладнання було оновлено.


У нас була схожа проблема. Ми будуємо VM з 1 розеткою і 32 ядрами. Sql розпізнає лише 8 процесорів. Ми перемикаємо його на 8 розеток і 4 ядра. Ми, де працює підприємство editon sql 2008r2 на Windows 2008r2.
користувач3799984

У мене була та сама проблема зі стандартною версією. У нас було використано 8 розеток, а решта не використала. Все, що нам потрібно було зробити, це змінити VM і налаштувати 4 розетки на 2 ядра.
Ніколя де Фонтеней

7

Подивіться в ERRORLOG з того часу, коли SQL Server вперше загорівся. Він розповість, скільки CPU використовує, і, ймовірно, чому. Якщо ви можете розмістити файл ERRORLOG де-небудь, це буде корисно для того, щоб побачити, що відбувається.


3

Я бачив це в іншій публікації Аймера Дхаріваля:

Навіть якщо у вас є Enterprise Edition, якщо застосовується модель ліцензування, заснована на серверній + клієнтській ліцензії (CAL), то сервер обмежений 20 фізичними ядрами на примірник

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.