SQL Server n'utilise pas tous les cœurs / threads de CPU

15

Après la mise à niveau du matériel de notre serveur SQL, nous avons remarqué dans le Gestionnaire des tâches de Windows que l'instance SQL n'utilise que la moitié des threads disponibles:

Gestionnaire des tâches.

Le serveur dispose du matériel et des logiciels suivants:

  • Windows 2008 R2 Entreprise 64 bits SP1
  • Intel Xeon E7-4870 - 4 processeurs (40 cœurs, 80 threads)
  • Microsoft SQL Server 2012 Enterprise Edition (64 bits)

Running select cpu_count from sys.dm_os_sys_inforenvoie 40.

L'OS voit tous les 80 threads.

Pourquoi la moitié seulement de la puissance de traitement du serveur est-elle utilisée?

Nous avons le même matériel et les mêmes logiciels sur deux serveurs et ils présentent tous les deux le même comportement.

Jon Seigel
la source

Réponses:

23

Dans le journal des erreurs SQL Server, il devrait vous expliquer pourquoi. J'ai trouvé cela sur un système client (vraiment juste coller le message pour Google jus):

SQL Server a détecté 4 sockets avec 8 cœurs par socket et 16 processeurs logiques par socket, 64 processeurs logiques au total; en utilisant 40 processeurs logiques basés sur les licences SQL Server. Ceci est un message informatif; Aucune action de l'utilisateur n'est requise.

J'ai obtenu l'explication probable d' ici :

Pour les clients disposant de la Software Assurance sur les licences SQL EE Server existantes (ou y accédant en vertu de leurs accords d'entreprise actuels pendant la durée), une version d'Enterprise Edition a été créée pour leur permettre de mettre à niveau vers SQL Server 2012. Cette version comporte des restrictions techniques limitant une instance à en utilisant seulement 20 cœurs de processeur (40 threads CPU avec Hyperthreading).

Résumé: dans le journal des erreurs, l'édition sera signalée comme Enterprise Editionou Enterprise Edition: Core-based Licensing. S'il s'agit du premier, comme dans le cas du système client susmentionné, vous devrez obtenir une licence basée sur le cœur pour utiliser tous les cœurs disponibles.

Si ce n'est pas le cas et que vous disposez déjà d'une licence pour tous les cœurs, vérifiez vos paramètres de masque d'affinité, en particulier s'ils ont été définis, et le matériel sous-jacent a été mis à niveau.

Jon Seigel
la source
Nous avons eu un problème similaire. Nous construisons une VM avec 1 socket et 32 ​​cœurs. Sql ne reconnaîtrait que 8 CPU. Nous le commutons sur 8 sockets et 4 cœurs, le problème a disparu. Nous avons exécuté Enterprise Editon SQL 2008R2 sur Windows 2008R2.
user3799984
J'ai eu le même problème avec une version standard. Nous avions 8 prises utilisées et il n'utiliserait pas le reste. Il ne nous restait plus qu'à changer la VM et configurer 4 sockets 2 cœurs.
Nicolas de Fontenay
7

Regardez dans le ERRORLOG à partir du premier démarrage de SQL Server. Il vous dira combien de CPU il utilise et probablement pourquoi. Si vous pouvez publier le fichier ERRORLOG quelque part, cela vous sera utile pour voir ce qui se passe.

mrdenny
la source
3

Je l'ai vu sur un autre post d'Ajmer Dhariwal:

Même si vous disposez de l'édition Entreprise, si le modèle de licence appliqué est basé sur Server + Client Access License (CAL), le serveur est limité à 20 cœurs physiques par instance.

Dom
la source