Delen via


Soft-NUMA (SQL Server)

van toepassing op:SQL Server-

Moderne processors hebben meerdere kernen per socket. Elke socket wordt weergegeven, meestal als één NUMA-knooppunt. De SQL Server-database-engine partitioneert verschillende interne structuren en partitioneert servicethreads per NUMA-knooppunt. Met processors die 10 of meer kernen per socket bevatten, verhoogt het gebruik van software NUMA om hardware NUMA-knooppunten te splitsen over het algemeen de schaalbaarheid en prestaties. Vóór SQL Server 2014 (12.x) SP2 vereiste op software gebaseerde NUMA (soft-NUMA) dat u het register moest bewerken om een knooppuntconfiguratieaffiniteitsmasker toe te voegen, en werd het op hostniveau geconfigureerd, in plaats van per instantie. Vanaf SQL Server 2014 (12.x) SP2 en SQL Server 2016 (13.x) wordt soft-NUMA automatisch geconfigureerd op database-exemplaarniveau wanneer de SQL Server Database Engine-service wordt gestart.

Hot-add-processors worden niet ondersteund door soft-NUMA.

Automatische soft-NUMA

Met SQL Server 2016 (13.x) worden bij het opstarten automatisch soft-NUMA-knooppunten gemaakt wanneer de SQL Server Database Engine meer dan acht fysieke kernen per NUMA-knooppunt of socket detecteert. Gelijktijdige SMT-processorkernen (multithreading) worden niet gedifferentieerd bij het tellen van fysieke kernen in een knooppunt. Wanneer het gedetecteerde aantal fysieke kernen meer dan acht per socket is, maakt de SQL Server Database Engine soft-NUMA-knooppunten die idealiter acht kernen bevatten, maar maximaal vier of maximaal acht fysieke kernen per knooppunt kunnen bevatten. De grootte van het hardwareknooppunt kan worden beperkt door een CPU-affiniteitsmasker. Het aantal NUMA-knooppunten overschrijdt nooit het maximum aantal ondersteunde NUMA-knooppunten.

U kunt soft-NUMA uitschakelen of opnieuw inschakelen met behulp van de instructie ALTER SERVER CONFIGURATION met het argument SET SOFTNUMA. Als u de waarde van deze instelling wijzigt, moet de database-engine opnieuw worden opgestart.

In de onderstaande afbeelding ziet u het type informatie met betrekking tot soft-NUMA dat wordt weergegeven in het foutenlogboek van SQL Server, wanneer SQL Server hardware NUMA-knooppunten detecteert met meer dan acht fysieke kernen per elk knooppunt of 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.

Notitie

Vanaf SQL Server 2014 (12.x) SP 2 gebruikt u Trace Flag 8079 zodat SQL Server automatische soft-NUMA kan gebruiken. Vanaf SQL Server 2016 (13.x) wordt dit gedrag beheerd door de engine en heeft traceringsvlag 8079 geen effect. Zie DBCC TRACEON - Trace flagsvoor meer informatie.

Handmatige soft-NUMA

Als u SQL Server handmatig wilt configureren voor het gebruik van soft-NUMA, schakelt u automatische soft-NUMA uit en bewerkt u het register om een affiniteitsmasker voor knooppuntconfiguratie toe te voegen. Wanneer u deze methode gebruikt, kan het soft-NUMA-masker worden opgegeven als een binaire vermelding, DWORD (hexadecimaal of decimaal) of QWORD (hexadecimaal of decimaal) in het register. Als u meer dan de eerste 32 CPU's wilt configureren, gebruikt u QWORD- of BINAIRE registerwaarden (QWORD-waarden kunnen niet worden gebruikt vóór SQL Server 2012 (11.x)). Nadat u het register hebt gewijzigd, moet u de database-engine opnieuw starten om de soft-NUMA-configuratie van kracht te laten worden.

Tip

CPU's worden genummerd vanaf 0.

Waarschuwing

Het onjuist bewerken van het register kan uw systeem ernstig beschadigen. Voordat u wijzigingen aanbrengt in het register, raden we u aan een back-up te maken van waardegegevens op de computer.

Bekijk het voorbeeld van een computer met acht CPU's die geen hardware NUMA hebben. Er zijn drie soft-NUMA-knooppunten geconfigureerd.
Database Engine-exemplaar A is geconfigureerd voor het gebruik van CPU's 0 tot en met 3. Een tweede exemplaar van de database-engine wordt geïnstalleerd en geconfigureerd voor het gebruik van CPU's 4 tot en met 7. Het voorbeeld kan visueel worden weergegeven als:

CPUs         0  1  2  3  4  5  6  7
Soft-NUMA   <-N0-><-N1-><----N2---->
SQL Server  <instance A><instance B>

Instantie A, met aanzienlijke I/O-activiteit, heeft nu twee I/O-threads en één luie schrijver thread. Instantie B, die processorintensieve bewerkingen uitvoert, heeft slechts één I/O-thread en één luie schrijfthread. Verschillende hoeveelheden geheugen kunnen worden toegewezen aan de exemplaren, maar in tegenstelling tot hardware NUMA ontvangen ze allebei geheugen van hetzelfde geheugenblok van het besturingssysteem en er is geen geheugen-naar-processoraffiniteit.

De luie schrijverthread is gekoppeld aan de SQLOS-weergave van de fysieke NUMA-geheugenknooppunten. Daarom is het aantal luie schrijfthreads dat wordt aangemaakt gelijk aan het aantal fysieke NUMA-knooppunten dat door de hardware wordt gepresenteerd. Zie voor meer informatie Hoe het werkt: Soft NUMA, I/O Completion Thread, Lazy Writer Workers en Memory Nodes.

Notitie

De soft-NUMA- registersleutels worden niet gekopieerd wanneer u een upgrade uitvoert van een exemplaar van SQL Server.

Het CPU-affiniteitsmasker instellen

Voer de volgende instructie uit op exemplaar A om deze te configureren voor het gebruik van CPU's 0, 1, 2 en 3 door het CPU-affiniteitsmasker in te stellen:

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

Voer de volgende instructie uit op exemplaar B om deze te configureren voor het gebruik van CPU's 4, 5, 6 en 7 door het MASKER voor CPU-affiniteit in te stellen:

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

Soft-NUMA-knooppunten koppelen aan CPU's

Voeg met behulp van het Register-editorprogramma (regedit.exe) de volgende registersleutels toe om soft-NUMA-knooppunt 0 toe te wijzen aan CPU's 0 en 1, soft-NUMA-knooppunt 1 aan CPU's 2 en 3, en soft-NUMA-knooppunt 2 aan CPU's 4, 5, 6 en 7.

Tip

Als u CPU's 60 tot en met 63 wilt opgeven, gebruikt u een QWORD-waarde van F000000000000000 of een BINAIRE waarde van 1111000000000000000000000000000000000000000000000000000000000000.

In het volgende voorbeeld wordt ervan uitgegaan dat u een DL580 G9-server hebt, met 18 kernen per socket (in vier sockets) en dat elke socket zich in een eigen K-groep bevindt. Een soft-NUMA-configuratie die u kunt maken, ziet er ongeveer als volgt uit: zes kernen per knooppunt, drie knooppunten per groep, vier groepen.

Voorbeeld voor een SQL Server-exemplaar met meerdere K-Groups Type Waardenaam Waardegegevens
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 DWORD CPUMask 0x3f
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 DWORD Group 0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 DWORD CPUMask 0x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 DWORD Group 0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 DWORD CPUMask 0x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 DWORD Group 0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 DWORD CPUMask 0x3f
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 DWORD Group 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 DWORD CPUMask 0x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 DWORD Group 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 DWORD CPUMask 0x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 DWORD Group 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 DWORD CPUMask 0x3f
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 DWORD Group 2
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 DWORD CPUMask 0x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 DWORD Group 2
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 DWORD CPUMask 0x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 DWORD Group 2
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 DWORD CPUMask 0x3f
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 DWORD Group 3
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 DWORD CPUMask 0x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 DWORD Group 3
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 DWORD CPUMask 0x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 DWORD Group 3

Metagegevens

U kunt de volgende DMV's gebruiken om de huidige status en configuratie van soft-NUMA weer te geven.

Hoewel u de actieve waarde voor automatische soft-NUMA kunt weergeven met behulp van sp_configure (Transact-SQL), kunt u de waarde ervan niet wijzigen met behulp van sp_configure. U moet de ALTER SERVER CONFIGURATION (Transact-SQL) verklaring gebruiken met het argument SET SOFTNUMA.