Unterstützung der NUMA-Funktionalität in SQL Server
Die folgenden wichtigen Änderungen wurden in SQL Server 2005 eingeführt, um die Vorteile der NUMA-Architektur (Non-Uniform Memory Access) nutzen zu können.
Gruppieren gemeinsamer CPUs
SQL Server gruppiert die Zeitplanungsmodule, die der Gruppierung der CPUs zugeordnet werden sollen, basierend auf der NUMA-Hardwarebegrenzung, die durch Windows verfügbar gemacht wird. Ein 16-Wege-Computer kann z. B. über 4 NUMA-Knoten verfügen, von denen jeder Knoten 4 CPUs besitzt. Auf diese Weise wird eine größere Speichertreffsicherheit für diese Gruppe von Zeitplanungsmodulen ermöglicht, wenn Tasks auf dem Knoten verarbeitet werden. Mithilfe von SQL Server können Sie einem NUMA-Hardwareknoten zugeordnete CPUs in mehrere CPU-Knoten unterteilen. Dies wird als soft-NUMA bezeichnet. In der Regel werden CPUs in mehrere CPUs unterteilt, um die Verarbeitung auf mehreren CPU-Knoten zu partitionieren. Weitere Informationen zu soft-NUMA finden Sie unter Grundlegendes zu NUMA (Non-Uniform Memory Access).
Wenn ein auf einem bestimmten NUMA-Hardwareknoten ausgeführter Thread Speicher zuweist, versucht der Speicher-Manager von SQL Server, Speicher aus dem Arbeitsspeicher zuzuweisen, der dem NUMA-Knoten für die Treffsicherheit der Verweise zugeordnet ist. Außerdem werden Pufferpoolseiten auf NUMA-Hardwareknoten verteilt. Es ist effizienter, wenn ein Thread auf den Speicher über eine dem lokalen Speicher zugewiesene Pufferseite zugreift, statt den Zugriff über nicht lokale Speicher vorzunehmen. Weitere Informationen finden Sie unter Vergrößern und Verkleinern des Pufferpools unter NUMA.
Jeder NUMA-Knoten (NUMA-Hardware oder soft-NUMA) besitzt einen zugehörigen E/A-Abschlussport, der zum Verarbeiten der Netzwerk-E/A verwendet wird. Auf diese Weise kann die Netzwerk-E/A-Verarbeitung auf mehrere Ports verteilt werden. Wenn eine Clientverbindung mit SQL Server hergestellt wird, wird diese an einen der Knoten gebunden. Alle Batchanforderungen von diesem Client werden auf dem betreffenden Knoten verarbeitet.
Bei jedem Start der Instanz von SQL Server in einer NUMA-Umgebung werden Informationsmeldungen im SQL-Fehlerprotokoll aufgezeichnet, die die NUMA-Konfiguration beschreiben.
Zuordnen von soft-NUMA Knoten zu NUMA-Hardwareknoten in SQL Server
soft-NUMA wird einmal für alle SQL Server-Instanzen des Computers definiert, sodass in mehreren Instanzen von Database Engine (Datenbankmodul) die gleichen soft-NUMA Knoten angezeigt werden. Jede Instanz von Database Engine (Datenbankmodul) verwendet dann die affinity mask-Option, um die entsprechenden CPUs auszuwählen. Jede Instanz verwendet dann die jeweils diesen CPUs zugeordneten soft-NUMA Knoten.
Beim Starten weist Windows dem Betriebssystem Speicher vom Hardware-KNOTEN 0 zu. Dementsprechend verfügt der Hardware-KNOTEN 0 für weitere Anwendungen im Vergleich zu den anderen Knoten über wenig lokalen Speicher. Dieses Problem wird bei einem großen Systemdateicache weiter verstärkt. Wenn SQL Server auf einem Computer mit mehr als einem NUMA-Knoten gestartet wird, wird das Starten eines NUMA-Knotens versucht, außer von KNOTEN 0, sodass die globalen Strukturen dem lokalen Speicher zugewiesen werden können. Weitere Informationen zum Konfigurieren von soft-NUMA finden Sie unter Vorgehensweise: Konfigurieren von SQL Server für die Verwendung von Soft-NUMA.
Zuweisen von Verbindungen zu NUMA-Knoten
Sowohl mit TCP als auch mit VIA können für Verbindungen zu mindestens einem bestimmten NUMA-Knoten eine Zuordnung hergestellt werden. Wenn keine Zuordnung vorhanden ist, oder wenn eine Verbindung zu Named Pipes oder zu Shared Memory hergestellt wird, erfolgt die Verteilung der Verbindungen auf NUMA-Knoten nach der Roundrobin-Methode. Innerhalb eines NUMA-Knotens wird die Verbindung auf dem Zeitplanungsmodul dieses Knotens mit der geringsten Belastung ausgeführt. Durch das Zuweisen neuer Verbindungen der Roundrobin-Methode kann es sein, dass alle CPUs innerhalb eines Knotens ausgelastet sind, während sich ein anderer Knoten im Leerlauf befindet. Wenn Sie über eine kleine CPU-Anzahl (beispielsweise über 2 CPUs) verfügen, und es wird ein hohes Ungleichgewicht des Zeitplaners aufgrund lang andauernder Batches, z. B. beim Massenladen, angezeigt, können Sie die Leistung verbessern, indem Sie NUMA deaktivieren. Weitere Informationen finden Sie unter Vorgehensweise: Zuordnen von TCP/IP-Ports zu NUMA-Knoten.
SQL Server-Versionsbegrenzungen
SQL Server 2000, einschließlich Service Pack 3, bietet keine spezielle Unterstützung für NUMA. In Service Pack 4 sind jedoch einige begrenzte NUMA-Optimierungen enthalten. SQL Server 2005 verfügt über viele beträchtliche Verbesserungen. Daher wird NUMA-Benutzern nachdrücklich empfohlen, ein Update auf SQL Server 2005 durchzuführen, um die Vorteile der NUMA-Architektur zu nutzen.