affinity Input-Output mask (Serverkonfigurationsoption)

Gilt für:SQL Server

Zum Ausführen von Multitasking verschiebt Microsoft Windows gelegentlich Prozessthreads zwischen verschiedenen Prozessoren. Obwohl dieses Vorgehen hinsichtlich des Betriebssystems effizient ist, kann es die Leistung von Microsoft SQL Server bei starker Systemauslastung beeinträchtigen, da jeder Prozessorcache wiederholt mit Daten beladen wird. Unter diesen Bedingungen kann das Zuweisen bestimmter Threads zu bestimmten Prozessoren die Leistung verbessern, da das erneute Laden von Prozessoren vermieden wird. Eine solche Zuordnung zwischen einem Thread und einem Prozessor wird als Prozessoraffinität bezeichnet.

SQL Server unterstützt die Prozessoraffinität durch zwei Optionen für Affinitätsmasken: affinity mask (auch CPU-Affinitätsmaske genannt) und affinity I/O mask. Weitere Informationen zur Option affinity mask finden Sie unter Affinitätsmaske (Serverkonfigurationsoption). CPU- und E/A-Affinitätsunterstützung für Server mit 33–64 Prozessoren erfordert die zusätzliche Verwendung von affinity64 mask (Serverkonfigurationsoption) bzw. affinity64 Input-Output mask (Serverkonfigurationsoption) .

Hinweis

Affinitätsunterstützung für Server mit 33 bis 64 Prozessoren steht nur auf 64-Bit-Betriebssystemen zur Verfügung.

Die Option affinity I/O mask bindet die SQL Server-Datenträger-E/A an eine bestimmte Teilmenge von CPUs. In High-End-OLTP-Umgebungen (Online Transactional Processing, Onlinetransaktionsverarbeitung) für SQL Server kann diese Erweiterung die Leistung von SQL Server -Threads, die E/A verursachen, verbessern. Diese Verbesserung unterstützt keine Hardwareaffinität für einzelne Datenträger oder Datenträgercontroller.

Der Wert für affinity I/O mask gibt an, welche CPUs eines Multiprozessorcomputers für die Verarbeitung von SQL Server-Datenträger-E/A-Vorgängen verwendet werden sollen. Die Maske ist eine Bitmap, in der das erste Bit von rechts die CPU mit der niedrigsten Nummer angibt, CPU(0), das zweite Bit von rechts die CPU mit der nächsthöheren Nummer, CPU(1) usw. Bei mehr als 32 Prozessoren legen Sie beide Konfigurationsoptionen affinity I/O mask und affinity64 I/O maskfest.

Die Werte für affinity I/O mask lauten wie folgt:

  • Eine aus 1 Byte bestehende affinity I/O mask deckt bis zu 8 CPUs in einem Multiprozessorcomputer ab.

  • Eine aus 2 Bytes bestehende affinity I/O mask deckt bis zu 16 CPUs in einem Multiprozessorcomputer ab.

  • Eine aus 3 Bytes bestehende affinity I/O mask deckt bis zu 24 CPUs in einem Multiprozessorcomputer ab.

  • Eine aus 4 Bytes bestehende affinity I/O mask deckt bis zu 32 CPUs in einem Multiprozessorcomputer ab.

  • Bei mehr als 32 CPUs konfigurieren Sie eine aus 4 Bytes bestehende affinity I/O mask für die ersten 32 CPUs und eine aus maximal 4 Bytes bestehende affinity64 I/O mask für die verbleibenden CPUs.

Ein 1-Bit im E/A-Affinitätsmuster gibt an, dass die entsprechende CPU für SQL Server-Datenträger-E/A-Vorgänge geeignet ist; ein 0-Bit gibt an, dass keine SQL Server-Datenträger-E/A-Vorgänge für die entsprechende CPU geplant werden sollten. Sind alle Bits auf 0 festgelegt oder ist affinity I/O mask nicht angegeben, werden SQL Server-Datenträger-E/A-Vorgänge für eine beliebige CPU geplant, die für die Verarbeitung von SQL Server-Threads geeignet ist.

Da das Festlegen der SQL Server-Option affinity I/O mask ein spezialisierter Vorgang ist, sollte er nur bei Bedarf ausgeführt werden. In den meisten Fällen kann eine optimale Leistung durch die standardmäßige Affinität von Windows 2000 oder Windows Server 2003 erzielt werden.

Wenn Sie die Option affinity I/O mask angeben, müssen Sie sie mit der Konfigurationsoption affinity mask verwenden. Aktivieren Sie in der Option affinity I/O mask und in der Option affinity mask nicht dieselbe CPU. Die Bits, die den einzelnen CPUs entsprechen, sollten sich jeweils in einem der folgenden drei Zustände befinden:

  • 0 in der Option affinity I/O mask und in der Option affinity mask .

  • 1 in der Option affinity I/O mask und 0 in der Option affinity mask .

  • 0 in der Option affinity I/O mask und 1 in der Option affinity mask .

Die Option affinity I/O mask ist eine erweiterte Option. Wenn Sie die Einstellung mithilfe der gespeicherten Systemprozedur sp_configure ändern, können Sie affinity I/O mask nur ändern, wenn Erweiterte Optionen anzeigen auf 1 festgelegt ist. In SQL Server ist für das erneute Konfigurieren der Option affinity I/O mask ein Neustart der SQL Server-Instanz erforderlich.

Achtung

Konfigurieren Sie nie gleichzeitig die CPU-Affinität im Windows-Betriebssystem und die Affinitätsmaske in SQL Server. Diese Einstellungen zielen auf dasselbe Ergebnis. Wenn die Konfigurationen inkonsistent sind, kann dies zu unvorhersehbaren Ergebnissen führen. Die CPU-Affinität in SQL Server sollte am besten mit der Option sp_configure in SQL Server konfiguriert werden.

Weitere Informationen

Überwachen der Ressourcenverwendung (Systemmonitor)
RECONFIGURE (Transact-SQL)
Serverkonfigurationsoptionen (SQL Server)
sp_configure (Transact-SQL)