Serverkonfiguration: Affinität-E/A-Maske

Gilt für: SQL Server

Zum Ausführen von Multitasking verschiebt Windows gelegentlich Prozessthreads zwischen verschiedenen Prozessoren. Obwohl dieses Vorgehen hinsichtlich des Betriebssystems effizient ist, kann es die Leistung von 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 mit 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 Konfigurieren Sie die Serverkonfigurationsoption Affinitätsmaske. Die Unterstützung von CPU- und E/A-Affinität für Server mit 33 bis 64 Prozessoren erfordert, dass Sie auch die Serverkonfigurationsoptionen affinity64 mask und affinity64 I/O mask verwenden.

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 verbindet SQL Server mit einer angegebenen 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. Um mehr als 32 Prozessoren zu konfigurieren, legen Sie sowohl die affinity I/O mask als auch die affinity64 I/O mask fest.

Für affinity I/O mask gelten folgende Werte:

Byte im Maskenformat Anzahl von CPUs
1 Byte Bis zu 8 CPUs
2-Byte Bis zu 16 CPUs
3-Byte Bis zu 24 CPUs
4 Byte Bis zu 32 CPUs

Für einen Computer mit mehr als 32 CPUs konfigurieren Sie eine aus vier Bytes affinity I/O mask bestehende affinity mask für die ersten 32 CPUs und eine aus bis zu 4 Bytes bestehende affinity64 I/O mask für die restlichen CPUs.

Ein 1-Bit im Affinitäts-E/A-Muster gibt an, dass die entsprechende CPU berechtigt ist, SQL Server-Datenträger-E/A-Vorgänge auszuführen. Ein Bit 0 gibt an, dass für die entsprechende CPU keine SQL Server-Platten-E/A-Vorgänge geplant werden sollen. Sind alle Bits auf 0 festgelegt oder affinity I/O mask ist 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, verwenden Sie sie nur bei Bedarf. In den meisten Fällen kann eine optimale Leistung durch die Affinität von standardmäßigem Microsoft Windows erzielt werden.

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

  • 0 sowohl in der affinity I/O mask-Option als auch in der affinity mask-Option.
  • 1 in der affinity I/O mask-Option und 0 in der affinity mask-Option.
  • 0 in der affinity I/O mask-Option und 1 in der affinity mask-Option.

Bei der Option affinity I/O mask handelt es sich um eine erweiterte Option. Wenn Sie die Einstellung mithilfe der gespeicherten Systemprozedur sp_configure ändern, können Sie „affinity I/O mask“ nur ändern, wenn show advanced options 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 affinity mask 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 gespeicherten Systemprozedu „sp_configure“ in SQL Server konfiguriert werden.