Después de instalar SQL Server Enterprise 2012 con el modelo de licencia Server + Cal, en una computadora con 2 procesadores cada uno con 16 núcleos (y sin hyperthreading involucrado) y poner el servidor bajo una carga extremadamente pesada, los 16 núcleos en el primer procesador estaban muy subutilizados, los primeros 4 núcleos en la segunda CPU se utilizaron en gran medida, y los últimos 12 núcleos no se utilizaron en absoluto (debido al límite de 20 núcleos para esta versión de servidor sql). La utilización total de la CPU se mostró alrededor del 25%. Desafortunadamente, el servidor sufrió un rendimiento extremadamente pobre, aunque si las tareas se distribuyeran uniformemente en los 20 núcleos, no habría sido tan malo.
Windows Server se estaba ejecutando en una imagen virtual VMWare en ESX Server, pero toda la CPU se asignó al servidor de Windows.
Intentamos cambiar la configuración de afinidad (por ejemplo, asignar la mayoría de los núcleos a la CPU y los demás a E / S), pero eso no ayudó a resolver los problemas de rendimiento.
La actualización de la edición del producto a SQL Server Enterprise Core 2012 no solo permitió que SQL Server utilizara los 12 núcleos no utilizados anteriormente en el segundo procesador, sino que también resultó en una distribución mucho más uniforme de las tareas en todos los procesadores. Para superar la acumulación de solicitudes, la utilización de cpU aumentó a alrededor del 90%, y luego se redujo a alrededor del 33% una vez que se puso al día, pero el rendimiento mejoró drásticamente ya que fallamos en la versión recién actualizada Y los problemas de rendimiento desaparecieron.
Me preguntaba si alguien sabe qué podría causar que SQL Server distribuya la carga de manera desigual, confiando casi exclusivamente en los primeros 4 núcleos del segundo procesador que tenían 12 núcleos inactivos, y asigne solo unas pocas tareas a cada uno de los 16 núcleos en el primer procesador. Además, ¿hay alguna forma en que podríamos haber distribuido la carga de manera más uniforme en los 20 núcleos que se estaban utilizando sin la actualización de la edición del producto?
La otra cara de esa pregunta es: ¿qué hizo la actualización del producto que provocó que SQL Server comenzara a distribuir la carga de manera uniforme en todos los núcleos que reconoció?
Gracias a cualquier idea para responder estas preguntas y / o enlaces que podrían ayudarme a comprender mejor cómo entender lo que estaba sucediendo.