Après avoir installé SQL Server Enterprise 2012 avec le modèle de licence Server + Cal, sur un ordinateur avec 2 processeurs chacun avec 16 cœurs (et sans hyperthreading impliqué) et mis le serveur sous une charge extrêmement lourde, les 16 cœurs du premier processeur étaient très sous-utilisés, le les 4 premiers cœurs du 2e processeur ont été largement utilisés et les 12 derniers cœurs n'ont pas été utilisés du tout (en raison de la limite de 20 cœurs pour cette version de serveur SQL). L'utilisation totale du processeur affichait environ 25%. Malheureusement, le serveur a souffert de performances extrêmement médiocres, même si les tâches étaient réparties uniformément sur les 20 cœurs, cela n'aurait pas été aussi mauvais.
Le serveur Windows s'exécutait sur une image virtuelle VMWare sous ESX Server, mais tout le processeur était alloué au serveur Windows.
Nous avons essayé de modifier les paramètres d'affinité (par exemple, allouer la plupart des cœurs au processeur et les autres aux E / S), mais cela n'a pas aidé à résoudre les problèmes de performances.
La mise à niveau de l'édition du produit vers SQL Server Enterprise Core 2012 a non seulement permis à SQL Server d'utiliser les 12 cœurs précédemment inutilisés sur le 2e processeur, mais a également entraîné une distribution beaucoup plus uniforme des tâches sur tous les processeurs. Pour surmonter l'arriéré des demandes, l'utilisation de l'unité centrale de traitement est passée à environ 90%, puis à environ 33% une fois qu'elle a été rattrapée, mais les performances se sont considérablement améliorées depuis que nous sommes passés à la nouvelle version mise à jour et les problèmes de performances ont disparu.
Je me demandais si quelqu'un savait ce qui pouvait provoquer une répartition inégale de la charge par SQL Server, en s'appuyant presque exclusivement sur les 4 premiers cœurs du 2e processeur qui avait 12 cœurs inactifs et en allouant seulement quelques tâches à chacun des 16 cœurs du premier processeur. De plus, existe-t-il un moyen de répartir plus uniformément la charge sur les 20 cœurs utilisés sans la mise à niveau de l'édition du produit?
Le revers de cette question est: qu'est-ce que la mise à niveau du produit a fait pour que SQL Server commence à répartir uniformément la charge sur tous les cœurs qu'il a reconnus?
Merci à toutes les informations pour répondre à ces questions et / ou liens qui pourraient m'aider à mieux comprendre comment donner un sens à ce qui se passait.