Soft-NUMA (SQL Server)Soft-NUMA (SQL Server)

Dieses Thema gilt für: JaSQL ServerkeineAzure SQL-DatenbankkeineAzure SQL Data Warehouse keine Parallel DatawarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Moderne Prozessoren verfügen über mehrere bis viele Kerne pro Socket.Modern processors have multiple to many cores per socket. Jeder Socket wird in der Regel als ein einzelner NUMA-Knoten dargestellt.Each socket is represented, usually, as a single NUMA node. Das SQL Server-Datenbankmodul partitioniert pro NUMA-Knoten verschiedene interne Strukturen und Dienstthreads für Partitionen.The SQL Server database engine partitions various internal structures and partitions service threads per NUMA node. Bei Prozessoren mit zehn oder mehr Kernen pro Socket, erhöht die Verwendung von Software-NUMA zum Teilen von NUMA-Hardwareknoten in der Regel die Skalierbarkeit und die Leistung, da Prozessoren mit zehn oder mehr Kernen pro Socket verwendet werden.With processors containing 10 or more cores per socket, using software NUMA to split hardware NUMA nodes generally increases scalability and performance. Vor SQL Server 2014 SP2 war beim softwarebasierten NUMA (soft-NUMA) eine Bearbeitung der Registrierung erforderlich, um eine Affinitätsmaske für die Knotenkonfiguration hinzuzufügen. Außerdem wurde der softwarebasierte NUMA über einen Computer anstatt über eine Instanz konfiguriert.Prior to SQL Server 2014 SP2, software-based NUMA (soft-NUMA) required you to edit the registry to add a node configuration affinity mask and was configured per computer rather than per instance. In SQL Server 2014 SP2 und SQL Server 2016 wird soft-NUMA automatisch auf die Datenbank-Instanzebene konfiguriert, wenn der SQL Server-Dienst startet.With SQL Server 2014 SP2 and SQL Server 2016, soft-NUMA is configured automatically at the database-instance level when the SQL Server service starts.

Hinweis

Hot-Add-Prozessoren werden von Soft-NUMA nicht unterstützt.Hot-add processors are not supported by soft-NUMA.

Automatischer Soft-NUMAAutomatic Soft-NUMA

Immer wenn der Datenbankmodul-Server in SQL Server 2016 beim Start mehr als acht physische CPU-Kerne pro NUMA-Knoten oder Fassung erkennt, werden standardmäßig automatisch Soft-NUMA-Knoten erstellt.With SQL Server 2016, whenever the database engine server detects more than 8 physical cores per NUMA node or socket at startup, soft-NUMA nodes are created automatically by default. Prozessorkerne mit Hyperthreading werden beim Zählen der physischen Kerne auf einem Knoten nicht unterschieden.Hyper-threaded processor cores are not differentiated when counting physical cores in a node. Wenn mehr als 8 physische Prozessoren pro Fassung erkannt werden, erstellt der Datenbankmodul-Dienst Soft-NUMA-Knoten, die im Idealfall acht Knoten enthalten, jedoch auch fünf oder bis zu neun logische Kerne pro Knoten enthalten können.When the number of physical cores detected is more than 8 per socket, the database engine service will create soft-NUMA nodes that ideally contain 8 cores, but can go down to 5 or up to 9 logical cores per node. Die Größe des Hardwareknotens kann durch eine CPU-Affinitätsmaske eingeschränkt werden.The size of the hardware node can be limited by a CPU affinity mask. Finden Sie unterSee
ALTER SERVER CONFIGURATION (Transact-SQL)ALTER SERVER CONFIGURATION (Transact-SQL). Die Anzahl von NUMA-Knoten wird nie die maximale Anzahl von unterstützten NUMA-Knoten übersteigen.The number of NUMA nodes will never exceed the maximum number of supported NUMA nodes.

Sie können soft-NUMA mithilfe der ALTER SERVER CONFIGURATION (Transact-SQL) -Anweisung mit dem Argument SET SOFTNUMA deaktivieren oder wieder aktivieren.You can disable or re-enable soft-NUMA using the ALTER SERVER CONFIGURATION (Transact-SQL) statement with the SET SOFTNUMA argument. Nach der Änderung des Werts dieser Einstellung ist ein Neustart des Datenbankmoduls erforderlich, damit diese wirksam wird.Changing the value of this setting requires a restart of the database engine to take effect.

Die folgende Abbildung zeigt die Art von Informationen zu Soft-NUMA, die im SQL Server-Fehlerprotokoll angezeigt wird, wenn SQL Server NUMA-Hardwareknoten mit mehr als acht physischen Prozessoren pro Knoten oder Fassung erkennt.The figure below shows the type of information regarding soft-NUMA that you will see in the SQL Server error log when SQL Server detects hardware NUMA nodes with greater than 8 physical cores in each node or socket.

2016-11-14 13:39:43.17 Server SQL Server detected 2 sockets with 12 cores per socket and 24 logical processors per socket, 48 total logical processors; using 48 logical processors based on SQL Server licensing. This is an informational message; no user action is required.
2016-11-14 13:39:43.35 Server Automatic soft-NUMA was enabled because SQL Server has detected hardware NUMA nodes with greater than 8 physical cores.
2016-11-14 13:39:43.63 Server Node configuration: node 0: CPU mask: 0x0000000000555555:0 Active CPU mask: 0x0000000000555555:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
2016-11-14 13:39:43.63 Server Node configuration: node 1: CPU mask: 0x0000000000aaaaaa:0 Active CPU mask: 0x0000000000aaaaaa:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
2016-11-14 13:39:43.63 Server Node configuration: node 2: CPU mask: 0x0000555555000000:0 Active CPU mask: 0x0000555555000000:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
2016-11-14 13:39:43.63 Server Node configuration: node 3: CPU mask: 0x0000aaaaaa000000:0 Active CPU mask: 0x0000aaaaaa000000:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.

Manueller Soft-NUMAManual Soft-NUMA

Sie können SQL ServerSQL Server manuell konfigurieren, um Soft-NUMA durch Deaktivieren der automatischen Soft_NUMA und Bearbeiten der Registrierung zu verwenden, damit Sie eine Affinitätsmaske für die Knotenkonfiguration hinzufügen können.To manually configure SQL ServerSQL Server to use soft-NUMA by disabling automatic soft_NUMA and editing the registry to add a node configuration affinity mask. Wenn Sie diese Methode verwenden, kann die Soft-NUMA-Maske als binärer Eintrag, als DWORD-Registrierungseintrag (hexadezimal oder dezimal) oder als QWORD-Registrierungseintrag (hexadezimal oder dezimal) angegeben werden.When using this method, the soft-NUMA mask can be stated as a binary, DWORD (hexadecimal or decimal), or QWORD (hexadecimal or decimal) registry entry. Verwenden Sie QWORD- oder BINARY-Registrierungseinträge, um mehr als die ersten 32 CPUs zu konfigurieren.To configure more than the first 32 CPUs use QWORD or BINARY registry values. (Die Verwendung von QWORD-Werten ist in Versionen vor Version SQL Server 2012SQL Server 2012 nicht möglich.) Nach Änderung der Registrierung müssen Sie das DatenbankmodulDatabase Engine neu starten, damit die Soft-NUMA-Konfiguration wirksam wird.(QWORD values cannot be used prior to SQL Server 2012SQL Server 2012.) After modifying the registry, you must restart the DatenbankmodulDatabase Engine for the soft-NUMA configuration to take effect.

Tipp

Die Nummerierung der CPUs beginnt mit 0.CPUs are numbered starting with 0.

Warnung

Ein fehlerhaftes Bearbeiten der Registrierung kann eine schwerwiegende Beschädigung des Systems zur Folge haben.Incorrectly editing the registry can severely damage your system. Bevor Sie Änderungen an der Registrierung vornehmen, sollten Sie die wertvollen Daten auf dem Computer sichern.Before making changes to the registry, we recommend that you back up any valued data on the computer.

Betrachten Sie das folgende Beispiel.Consider the following example. Ein Computer mit acht CPUs verfügt über keine NUMA-Hardware.A computer with eight CPUs does not have hardware NUMA. Drei Soft-NUMA-Knoten werden konfiguriert.Three soft-NUMA nodes are configured.
DatenbankmodulDatabase Engine-Instanz A wird für die Verwendung der CPUs 0 bis 3 konfiguriert. instance A is configured to use CPUs 0 through 3. Eine zweite DatenbankmodulDatabase Engine -Instanz wird installiert und für die Verwendung der CPUs 4 bis 7 konfiguriert.A second instance of the DatenbankmodulDatabase Engine is installed and configured to use CPUs 4 through 7. Das Beispiel kann wie folgt visuell dargestellt werden:The example can be visually represented as:

CPUs 0 1 2 3 4 5 6 7

Soft-NUMA <-N0--><-N1-><----N2---->

SQL Server <instance A ><instance B>

Instanz A, auf der ein hohes Maß an E/A-Aktivität stattfindet, verfügt nun über zwei E/A-Threads und einen Thread für LAZY WRITER-Prozesse (verzögertes Schreiben), während Instanz B, auf der prozessorintensive Vorgänge ausgeführt werden, nur über einen E/A-Thread und einen Thread für LAZY WRITER-Prozesse verfügt.Instance A, which experiences significant I/O, now has two I/O threads and one lazy writer thread, while instance B, which performs processor-intensive operations, has only one I/O thread and one lazy writer thread. Den Instanzen können zwar unterschiedliche Mengen an Arbeitsspeicher zugewiesen werden, aber im Unterschied zu Hardware-NUMA erhalten beide Instanzen den Arbeitsspeicher aus demselben Betriebssystem-Speicherblock und es ist keine Speicher-Prozessor-Affinität vorhanden.Differing amounts of memory can be assigned to the instances, but unlike hardware NUMA, they both receive memory from the same operating system memory block and there is no memory-to-processor affinity.

Der LAZY WRITER-Thread ist an die SQL OS-Sicht der physischen NUMA-Arbeitsspeicherknoten gebunden.The lazy writer thread is tied to the SQL OS view of the physical NUMA memory nodes. Daher entsprechen die physischen NUMA-Knoten der Hardware der Anzahl der erstellten LAZY WRITER-Threads.Therefore, whatever the hardware presents as physical NUMA nodes will equate to the number of lazy writer threads that are created. Weitere Informationen finden Sie unterFor more information, see
How It Works: Soft NUMA, I/O Completion Thread, Lazy Writer Workers and Memory Nodes(Vorgehensweise: Soft-NUMA, E/A-Abschlussthreads, LAZY WRITER-Worker- und Arbeitsspeicherknoten).How It Works: Soft NUMA, I/O Completion Thread, Lazy Writer Workers and Memory Nodes.

Hinweis

Die Soft-NUMA -Registrierungsschlüssel werden nicht kopiert, wenn Sie eine Instanz von SQL ServerSQL Server.The Soft-NUMA registry keys are not copied when you upgrade an instance of SQL ServerSQL Server.

Festlegen der CPU-AffinitätsmaskeSet the CPU affinity mask

Führen Sie auf Instanz A die folgende Anweisung aus, um die Instanz durch Festlegen der CPU-Affinitätsmaske für die Verwendung der CPUs 0, 1, 2 und 3 zu konfigurieren:Run the following statement on instance A to configure it to use CPUs 0, 1, 2, and 3 by setting the CPU affinity mask:

ALTER SERVER CONFIGURATION   
SET PROCESS AFFINITY CPU=0 TO 3;  

Führen Sie auf Instanz B die folgende Anweisung aus, um die Instanz durch Festlegen der CPU-Affinitätsmaske für die Verwendung der CPUs 4, 5, 6 und 7 zu konfigurieren:Run the following statement on instance B to configure it to use CPUs 4, 5, 6, and 7 by setting the CPU affinity mask:

ALTER SERVER CONFIGURATION   
SET PROCESS AFFINITY CPU=4 TO 7;  

Zuordnen von Soft-NUMA-Knoten zu den CPUsMap soft-NUMA nodes to CPUs

Fügen Sie mithilfe des Registrierungs-Editors (regedit.exe) die folgenden Registrierungsschlüssel hinzu, um den CPUs 0 und 1 den Soft-NUMA-Knoten 0, den CPUs 2 und 3 den Soft-NUMA-Knoten 1 und den CPUs 4, 5, 6 und 7 den Soft-NUMA-Knoten 2Using the Registry Editor program (regedit.exe), add the following registry keys to map soft-NUMA node 0 to CPUs 0 and 1, soft-NUMA node 1 to CPUs 2 and 3, and soft-NUMA node 2 to CPUs 4. zuzuordnen.5, 6, and 7.

Tipp

Verwenden Sie zum Angeben der CPUs 60 bis 63 den QWORD-Wert F000000000000000 oder den BINARY-Wert 1111000000000000000000000000000000000000000000000000000000000000.To specify CPUs 60 through 63, use a QWORD value of F000000000000000 or a BINARY value of 1111000000000000000000000000000000000000000000000000000000000000.

Legen Sie für das folgende Beispiel einen DL580 G9-Server mit 18 Kernen pro Fassung (in 4 Fassungen) zugrunde, wobei jede Fassung eine eigene K-Gruppe darstellt.In the following example, assume you have a DL580 G9 server, with 18 cores per socket (in 4 sockets), and each socket is in its own K-group. Eine Soft-NUMA-Konfiguration, die Sie dafür erstellen, könnte etwa so aussehen.A soft-numa configuration that you might create would look something like following. (6 Kerne pro Knoten, 3 Knoten pro Gruppe, 4 Gruppen).(6 cores per Node, 3 nodes per group, 4 groups).

Beispiel für einen SQL Server 2016SQL Server 2016 -Server mit mehreren K-GruppenExample for a SQL Server 2016SQL Server 2016 server with multiple K-Groups TypType WertnameValue name WertdatenValue data
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 DWORDDWORD GruppierenGroup 00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 DWORDDWORD GruppierenGroup 00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 DWORDDWORD GruppierenGroup 00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 DWORDDWORD GruppierenGroup 11
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 DWORDDWORD GruppierenGroup 11
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 DWORDDWORD GruppierenGroup 11
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 DWORDDWORD GruppierenGroup 22
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 DWORDDWORD GruppierenGroup 22
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 DWORDDWORD GruppierenGroup 22
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 DWORDDWORD GruppierenGroup 33
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 DWORDDWORD GruppierenGroup 33
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 DWORDDWORD GruppierenGroup 33

MetadatenMetadata

Sie können die folgenden DMVs zum Anzeigen des aktuellen Status und der Konfiguration von Soft-NUMA verwenden.You can use the following DMVs to view the current state and configuration of soft_NUMA.

Hinweis

Obwohl Sie den ausgeführten Wert für automatischen soft-NUMA mithilfe von sp_configure (Transact-SQL) anzeigen können, können Sie dessen Wert mit sp_configure nicht ändern.While you can view the running value for automatic soft-NUMA using sp_configure (Transact-SQL), you cannot change its value using sp_configure. Sie müssen die ALTER SERVER CONFIGURATION (Transact-SQL)-Anweisung mit dem SET SOFTNUMA-Argument verwenden.You must use the ALTER SERVER CONFIGURATION (Transact-SQL) statement with the SET SOFTNUMA argument.

Siehe auchSee Also

Zuordnen von TCP/IP-Ports zu NUMA-Knoten (SQL Server) Map TCP IP Ports to NUMA Nodes (SQL Server)
Affinitätsmaske (Serverkonfigurationsoption) affinity mask Server Configuration Option
ALTER SERVER CONFIGURATION (Transact-SQL)ALTER SERVER CONFIGURATION (Transact-SQL)