affinity I/O mask (Option)

Für die Ausführung von Multitasking verschieben Microsoft Windows 2000 und Windows Server 2003 manchmal Prozessthreads zwischen den Prozessoren. Obwohl dies aus der Sicht des Betriebssystems effizient ist, kann diese Aktivität die Leistung von Microsoft SQL Server bei starker Systemauslastung reduzieren, da jeder Prozessorcache wiederholt mit Daten geladen 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 Affinitätsmaskenoptionen: affinity mask (auch als CPU-Affinitätsmaske bezeichnet) und affinity I/O mask. Weitere Informationen zur Option affinity mask finden Sie unter affinity mask-Option. Zur Unterstützung der CPU- und E/A-Affinität für Server mit 33 bis 64 Prozessoren muss zusätzlich die affinity64 mask (Option) bzw. die affinity64 I/O mask (Option) verwendet werden.

HinweisHinweis

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 der 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 müssen Sie die beiden Konfigurationsoptionen affinity I/O mask und affinity64 I/O mask verwenden.

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 sollen. 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 einen spezialisierten Vorgang darstellt, 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 nicht dieselbe CPU in der Option affinity I/O mask und in der Option affinity mask. 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 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.

VorsichtshinweisVorsicht

Konfigurieren Sie nicht die CPU-Affinität im Windows-Betriebssystem und gleichzeitig 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 von SQL Server wird am besten mit der entsprechenden Option von sp_configure in SQL Server konfiguriert.