Freigeben über


IIS 8.0 Multicore-Skalierung auf NUMA-Hardware

von Robert McMurray

Kompatibilität

Version Hinweise
IIS 8.0 Multicore-Skalierung auf NUMA wurde in IIS 8.0 eingeführt.
IIS 7.5 Multicore-Skalierung auf NUMA wurde in IIS 7.5 nicht unterstützt.
IIS 7.0 Multicore-Skalierung auf NUMA wurde in IIS 7.0 nicht unterstützt.

Problem

Im Allgemeinen sollte die Erhöhung der Anzahl der Kerne zu einer erhöhten Leistung führen. Es kommt jedoch zu einem Punkt, an dem das Erhöhen der Anzahl der Kerne zu Leistungseinbußen führen kann, da die Kosten der Speichersynchronisierung die Vorteile der NUMA-Hardware mit zusätzlichen Kernen überwiegen. IIS 8.0 behebt dieses Problem durch intelligente Verteilung und Affinität ihrer Prozesse auf Hardware ohne Uniform-Memory-Access (NUMA).

Lösung

Internetinformationsdienste (INTERNET Information Services, IIS) unter Windows Server 2012 sind NUMA-fähig und bieten den IT-Administratoren die optimale Konfiguration. Im folgenden Abschnitt werden die verschiedenen Konfigurationsoptionen beschrieben, um die beste Leistung mit IIS 8.0 auf NUMA-Hardware zu erzielen.

IIS unterstützt die folgenden zwei Arten der Partitionierung der Workload:

  1. Führen Sie mehrere Arbeitsprozesse in einem Anwendungspool (d. h. Webgarten) aus: Wenn Sie diesen Modus verwenden, ist der Anwendungspool standardmäßig so konfiguriert, dass ein Arbeitsprozess ausgeführt wird. Für maximale Leistung sollten Sie die gleiche Anzahl von Arbeitsprozessen wie NUMA-Knoten ausführen, sodass zwischen den Arbeitsprozessen und NUMA-Knoten eine Affinität von 1:1 besteht. Dazu können Sie die AppPool-Einstellung „Maximale Arbeitsprozesse“ auf 0 festlegen. In dieser Einstellung bestimmt IIS, wie viele NUMA-Knoten auf der Hardware verfügbar sind, und startet dieselbe Anzahl von Arbeitsprozessen.
  2. Führen Sie mehrere Anwendungspools in einer einzigen Arbeitsauslastung/einer Site aus: In dieser Konfiguration wird die Arbeitsauslastung/die Site in mehrere Anwendungspools unterteilt. Beispielsweise kann die Site mehrere Anwendungen enthalten, die für die Ausführung in separaten Anwendungspools konfiguriert sind. Effektiv führt diese Konfiguration dazu, dass mehrere IIS-Arbeitsprozesse für die Arbeitsauslastung/Site ausgeführt werden und IIS die Prozessaffinität für maximale Leistung intelligent verteilt.

Darüber hinaus gibt es zwei verschiedene Möglichkeiten für IIS 8.0, den optimalen NUMA-Knoten zu identifizieren, wenn der IIS-Arbeitsprozess gestartet werden soll.

  1. Am häufigsten verfügbarer Arbeitsspeicher (Standard): Die Idee hinter diesem Ansatz besteht darin, dass der NUMA-Knoten mit dem am häufigsten verfügbaren Arbeitsspeicher die beste Lösung ist, um den zusätzlichen IIS-Arbeitsprozess zu übernehmen, der gerade gestartet werden soll. IIS verfügt über das Wissen über die Arbeitsspeichernutzung durch jeden NUMA-Knoten und verwendet diese Informationen zum „Vornehmen eines Lastenausgleichs“ der IIS-Arbeitsprozesse.
  2. Windows: IIS hat auch die Möglichkeit, Windows OS diese Entscheidung treffen zu lassen. Windows OS verwendet round-robin.

Schließlich gibt es zwei verschiedene Möglichkeiten, die Affinität für Threads von einem IIS-Arbeitsprozess auf einen NUMA-Knoten zu konfigurieren.

  1. Soft Affinity (Standard):Wenn andere NUMA-Knoten die Zyklen aufweisen, werden die Threads aus einem IIS-Arbeitsprozess möglicherweise auf nicht affinitierte NUMA-Knoten geplant. Dieser Ansatz trägt dazu bei, alle verfügbaren Ressourcen des Systems als Ganzes zu maximieren.
  2. Hard Affinity: Bei fester Zugehörigkeit werden alle Threads eines IIS-Arbeitsprozesses unabhängig von der Auslastung der anderen NUMA-Knoten im System dem NUMA-Knoten zugewiesen, der nach dem obigen Muster für die Affinität ausgewählt wurde.

Schrittanweisungen

Voraussetzungen

  • IIS 2012 ist unter Windows Server 2012 installiert.
  • Das IIS-Prozessmodell ist Teil der IIS-Anwendungspoolkonfiguration. Es gibt kein bestimmtes IIS-Feature, das im Server-Manager installiert werden muss.

Problemumgehungen für bekannte Fehler

Derzeit gibt es keine bekannten Fehler für dieses Feature.

Konfigurationsschritte

  1. Öffnen Sie den IIS-Manager.
  2. Wählen Sie im linken Navigationsfenster Anwendungspools aus:
    Screenshot that shows Application Pools selected.
  3. App-Pool auswählen:
    Screenshot that shows the Application Pools pane. The Default App Pool line is highlighted.
  4. Wählen Sie im Bereich Aktion die Option Erweiterte Einstellungen aus:
    Screenshot that shows the Actions pane with Advanced Settings highlighted.
  5. Suchen Sie unter Prozessmodellgruppe die Einstellung Maximale Arbeitsprozesse.
    Screenshot that shows the Process Model group. Maximum Worker Processes and its value of 1 is highlighted.
  6. Legen Sie diesen Wert standardmäßig auf 0 fest.

Die optimale NUMA-Auswahllogik sowie den Affinitätstyp finden Sie auch unter Erweiterte Einstellungen. Sie werden jedoch nur angezeigt, wenn IIS auf NUMA-Hardware ausgeführt wird.

Szenarien

Führen Sie Leistungstests auf NUMA-Hardware vor und nach dem Upgrade auf Windows Server 2012 aus. Vergleichen Sie die Leistungsergebnisse, um die Verbesserungen anzuzeigen.

Zusammenfassung

Sie haben nun das Feature IIS Multicore-Skalierung für NUMA-Hardware in Windows Server 2012 kennengelernt.