web-dev-qa-db-fra.com

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

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:

Task Manager.

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)

Fonctionnement select cpu_count from sys.dm_os_sys_info renvoie 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.

15
Moharrer

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 de 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 Edition ou 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.

23
Jon Seigel

Recherchez dans le journal des erreurs à 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.

7
mrdenny

J'ai vu ça sur n autre post par 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.

3
Dom