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:
.
Le serveur dispose du matériel et des logiciels suivants:
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.
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.
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.
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.