it-swarm.com.de

SQL Server verwendet nicht alle CPU-Kerne / Threads

Nach dem Upgrade der Hardware unseres SQL Servers haben wir im Windows Task-Manager festgestellt, dass die SQL-Instanz nur die Hälfte der ihr zur Verfügung stehenden Threads verwendet:

Task Manager.

Der Server verfügt über folgende Hardware und Software:

  • Windows 2008 R2 Enterprise 64-Bit-SP1
  • Intel Xeon E7-4870 - 4 Prozessoren (40 Kerne, 80 Threads)
  • Microsoft SQL Server 2012 Enterprise Edition (64-Bit)

Laufen select cpu_count from sys.dm_os_sys_info gibt 40 zurück.

Das Betriebssystem sieht alle 80 Threads.

Warum wird nur die Hälfte der Rechenleistung des Servers verwendet?

Wir haben dieselbe Hardware und Software auf zwei Servern und beide zeigen dasselbe Verhalten.

15
Moharrer

Im SQL Server-Fehlerprotokoll sollte angegeben werden, warum. Ich habe dies auf einem Kundensystem gefunden (wirklich nur die Nachricht für Google-Saft einfügen):

SQL Server hat 4 Sockets mit 8 Kernen pro Socket und 16 logischen Prozessoren pro Socket erkannt, insgesamt 64 logische Prozessoren. Verwenden von 40 logischen Prozessoren basierend auf SQL Server-Lizenzierung. Dies ist eine Informationsnachricht. Es ist keine Benutzeraktion erforderlich.

Ich habe die wahrscheinliche Erklärung von hier :

Für Kunden mit Software Assurance für vorhandene SQL EE Server-Lizenzen (oder den Zugriff auf diese Lizenzen im Rahmen ihrer aktuellen Unternehmensvereinbarungen während der Laufzeit) wurde eine Version von Enterprise Edition erstellt, mit der sie ein Upgrade auf SQL Server 2012 durchführen können. Diese Version unterliegt technischen Einschränkungen, auf die eine Instanz beschränkt ist Verwenden von nur 20 Prozessorkernen (40 CPU-Threads mit Hyperthreading).

Zusammenfassung: Im Fehlerprotokoll wird die Edition als Enterprise Edition oder Enterprise Edition: Core-based Licensing. Wenn das erstere wie im Fall des oben genannten Kundensystems angegeben ist, müssen Sie eine kernbasierte Lizenz erwerben, um alle verfügbaren Kerne nutzen zu können.

Wenn dies nicht der Fall ist und Sie bereits für alle Kerne lizenziert sind, überprüfen Sie Ihre Affinitätsmaskeneinstellungen, insbesondere wenn diese festgelegt wurden und die zugrunde liegende Hardware aktualisiert wurde.

23
Jon Seigel

Sehen Sie im ERRORLOG nach, wann SQL Server zum ersten Mal gestartet wurde. Hier erfahren Sie, wie viele CPUs verwendet werden und wahrscheinlich warum. Wenn Sie die ERRORLOG-Datei irgendwo veröffentlichen können, ist dies hilfreich, um zu sehen, was los ist.

7
mrdenny

Ich habe das gesehen auf ein anderer Beitrag von Ajmer Dhariwal:

Selbst wenn Sie über eine Enterprise Edition verfügen und das angewendete Lizenzmodell auf Server + Client Access License (CAL) basiert, ist der Server auf 20 physische Kerne pro Instanz beschränkt

3
Dom