NUMA kann durch spezielle Hardware (NUMA-Hardware) oder durch Konfigurieren des SQL Server-Arbeitsspeichers (Soft-NUMA) eine Zuordnung zwischen Arbeitsspeicher und CPUs vornehmen. Beim Starten konfiguriert sich SQL Server selbst auf Basis der zugrunde liegenden Betriebssystem- und Hardwarekonfiguration oder auf Basis der Soft-NUMA-Einstellung. Wenn SQL Server in einer NUMA-Konfiguration gestartet wird, zeichnet das SQL Server-Protokoll sowohl bei Hardware- als auch bei Soft-NUMA für jeden Knoten zusammen mit der CPU-Maske eine Meldung für eine Multimoduskonfiguration auf.
Hardware-NUMA
Computer mit Hardware-NUMA verfügen über mehrere Systembusse, von denen jeder eine kleine Gruppe von Prozessoren bedient. Jede Gruppe von Prozessoren verfügt über ihren eigenen Arbeitsspeicher und möglicherweise über eigene E/A-Kanäle, aber jede CPU kann auf kohärente Weise auf Arbeitsspeicher zugreifen, der anderen Gruppen zugeordnet ist. Jede dieser Gruppen stellt einen NUMA-Knoten dar. Die Anzahl der CPUs in einem NUMA-Knoten ist je nach Hardwarehersteller unterschiedlich. Der Hardwarehersteller kann Ihnen sagen, ob Ihr Computer NUMA-Hardware unterstützt.
Wenn Sie über NUMA-Hardware verfügen, können Sie sie ggf. so konfigurieren, dass anstelle von NUMA Interleave-Speicher verwendet wird. In diesem Fall erkennt Windows, und damit auch SQL Server, die Hardware nicht als NUMA. Führen Sie die folgende Abfrage aus, um die für SQL Server verfügbare Anzahl von Speicherknoten zu suchen:
SELECT DISTINCT memory_node_id
FROM sys.dm_os_memory_clerks
Wenn SQL Server nur einen einzigen Speicherknoten (Knoten 0) zurückgibt, verfügen Sie entweder nicht über NUMA-Hardware, oder die Hardware ist als interleaved konfiguriert (Nicht-NUMA). Wenn Sie den Eindruck haben, dass die Hardware-NUMA falsch konfiguriert ist, setzen Sie sich zum Aktivieren von NUMA mit Ihrem Hardwarehersteller in Verbindung. SQL Server ignoriert die NUMA-Konfiguration, wenn die Hardware-NUMA vier CPUs oder weniger und ein Knoten nur eine CPU aufweist.
Soft-NUMA
SQL Server ermöglicht es, CPUs in Knoten zu gruppieren. Dieser Vorgang wird als Soft-NUMA bezeichnet. Im Allgemeinen konfigurieren Sie Soft-NUMA, wenn Sie über viele CPUs und keine NUMA-Hardware verfügen. Sie können mit Soft-NUMA aber auch Hardware-NUMA-Knoten in kleinere Gruppen unterteilen. Nur das SQL Server-Zeitplanungsmodul und die SQL Server-Netzwerkschnittstelle (Network Interface, SNI) sind Soft-NUMA-fähig. Speicherknoten werden auf der Grundlage von Hardware-NUMA erstellt und werden somit nicht von Soft-NUMA beeinflusst. Wenn Sie beispielsweise bei einem SMP-Computer, der über acht CPUs verfügt, vier Soft-NUMA-Knoten mit jeweils zwei CPUs erstellen, werden alle vier NUMA-Knoten von nur einem Speicherknoten versorgt. Soft-NUMA stellt keine Affinität zwischen Speicher und CPU bereit.
Zu den Vorteilen von Soft-NUMA zählt das Reduzieren von E/A- und LAZY WRITER-Prozess-Engpässen (verzögertes Schreiben) auf Computern, die zwar viele CPUs, aber keine NUMA-Hardware haben. Für jeden NUMA-Knoten gibt es einen einzelnen E/A-Thread sowie einen einzelnen LAZY WRITER-Thread. Abhängig von der Auslastung der Datenbank kann es durch diese jeweils nur einmal vorhandenen Threads zu einem erheblichen Leistungsengpass kommen. Werden vier Soft-NUMA-Knoten konfiguriert ergeben sich daraus vier E/A-Threads und vier Threads für LAZY WRITER-Prozesse, wodurch sich die Leistung verbessern lässt.
Sie können kein Soft-NUMA erstellen, das CPUs aus unterschiedlichen NUMA-Hardwareknoten enthält. Verfügt Ihre Hardware beispielsweise über acht CPUs (0..7), und es existieren zwei Hardware-NUMA-Knoten (0-3 and 4-7), können Sie durch Kombinieren von CPU (0, 1) und CPU (2, 3) Soft-NUMA erstellen. Sie können Soft-NUMA nicht mit CPU (1, 5) erstellen, aber Sie können mithilfe der CPU-Affinität einer Instanz von SQL Server CPUs aus unterschiedlichen NUMA-Knoten zuordnen. Verwendet SQL Server im Rahmen des vorhergehenden Beispiels die CPUs 0-3, liegt nur ein E/A-Thread und ein LAZY WRITER-Thread vor. Verwendet SQL Server im Rahmen des vorhergehenden Beispiels die CPUs 1, 2, 5 und 6. greifen Sie auf zwei NUMA-Knoten bei zwei E/A-Threads und zwei LAZY WRITER-Threads zu.
Hinweis: |
|---|
|
Manche Hardwarekonfigurationen verwenden gemeinsam freigegebene Ressourcen wie z. B. einen L3/L4-Cache. Prozessoren können um diese freigegebenen Ressourcen gruppiert werden, um Soft-NUMA-Knoten zu erstellen.
|
Weitere Informationen finden Sie unter Vorgehensweise: Konfigurieren von SQL Server für die Verwendung von Soft-NUMA.