Vorgehensweise: Konfigurieren von SQL Server für die Verwendung von Soft-NUMA
NUMA (Non-Uniform Memory Access) wird automatisch erkannt und verwendet. Wenn Sie NUMA bei großen SMB-Computern simulieren oder die Leistung von NUMA-Computern unterteilen möchten, um die Treffsicherheit zu erhöhen, können Sie Software-NUMA (Soft-NUMA) verwenden. Beim Konfigurieren von SQL Server für die Verwendung von Soft-NUMA müssen Sie die Registrierung bearbeiten, um eine Affinitätsmaske für die Knotenkonfiguration hinzuzufügen. Die Soft-NUMA-Maske kann als binärer oder als DWORD-Registrierungseintrag (hexadezimal oder dezimal) angegeben werden. Wenn Sie mehr als die ersten 32 CPUs konfigurieren möchten, verwenden BINÄRE Registrierungswerte. Zum Konfigurieren von Soft-NUMA müssen Sie Database Engine (Datenbankmodul) neu starten. Lesen Sie vor dem Konfigurieren von Software-NUMA die Informationen unter Grundlegendes zu NUMA (Non-Uniform Memory Access) und Unterstützung der NUMA-Funktionalität in SQL Server.
Tipp |
---|
Die CPUs werden mit 0 beginnend nummeriert. |
Ein fehlerhaftes Bearbeiten der Registrierung kann eine schwerwiegende Beschädigung des Systems zur Folge haben. Bevor Sie Änderungen an der Registrierung vornehmen, ist es empfehlenswert, alle wichtigen Daten zu sichern, die sich auf dem Computer befinden.
Betrachten Sie das folgende Beispiel. Ein Computer mit acht CPUs verfügt über keine NUMA-Hardware. Es werden drei Soft-NUMA-Knoten konfiguriert. Database Engine (Datenbankmodul)-Instanz A wird für die Verwendung der CPUs 0 bis 3 konfiguriert. Eine zweite Database Engine (Datenbankmodul)-Instanz wird installiert und für die Verwendung der CPUs 4 bis 7 konfiguriert. Das Beispiel kann wie folgt visuell dargestellt werden:
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 zwei Threads 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. 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.
Hinweis |
---|
Die Soft-NUMA-Registrierungsschlüssel werden nicht kopiert, wenn Sie eine Instanz von SQL Server aktualisieren. |
Festlegen der CPU-Affinitätsmaske
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:
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:
ALTER SERVER CONFIGURATION SET PROCESS AFFINITY CPU=4 TO 7;
Zuordnen von Soft-NUMA-Knoten zu den 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 2 zuzuordnen.
SQL Server 2005
Typ
Wertname
Wertdaten
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration\Node0
DWORD
CPUMask
0x03
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration\Node1
DWORD
CPUMask
0x0c
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration\Node2
DWORD
CPUMask
0xf0
SQL Server 2008
Typ
Wertname
Wertdaten
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node0
DWORD
CPUMask
0x03
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node1
DWORD
CPUMask
0x0c
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node2
DWORD
CPUMask
0xf0
SQL Server 2008 R2
Typ
Wertname
Wertdaten
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node0
DWORD
CPUMask
0x03
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node0
DWORD
Group
0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node1
DWORD
CPUMask
0x0c
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node1
DWORD
Group
0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node2
DWORD
CPUMask
0xf0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node2
DWORD
Gruppe
0
Tipp Zum Angeben der CPUs 60 bis 63 verwenden Sie den BINÄREN Wert 1111000000000000000000000000000000000000000000000000000000000000.
Siehe auch