Optimieren Sie die Netzwerkleistung auf Windows-Instances - Amazon Elastic Compute Cloud

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Optimieren Sie die Netzwerkleistung auf Windows-Instances

Um die maximale Netzwerkleistung auf Ihren Windows-Instances mit erweitertem Netzwerk zu erreichen, müssen Sie möglicherweise die Standardbetriebssystemkonfiguration ändern. Wir empfehlen die folgenden Konfigurationsänderungen für Anwendungen, die eine hohe Netzwerkleistung erfordern. Andere Optimierungen (z. B. das Aktivieren des Prüfsummen-Offloads und das Aktivieren von RSS) sind auf offiziellen Windows-AMIs bereits konfiguriert.

Anmerkung

TCP-Chimney-Verschiebung sollte in den meisten Anwendungsfällen deaktiviert werden und ist ab Windows Server 2016 veraltet.

Zusätzlich zu diesen Betriebssystemoptimierungen sollten Sie auch die Maximum Transmission Unit (MTU, maximale Übertragungseinheit) Ihres Netzwerkverkehrs berücksichtigen und an Ihren Workload und Ihre Netzwerkarchitektur anpassen. Weitere Informationen finden Sie unter Netzwerk-MTU (Maximum Transmission Unit) für Ihre EC2-Instance.

AWS misst regelmäßig durchschnittliche Round-Trip-Latenzen zwischen Instances, die in einer Cluster-Platzierungsgruppe von 50 us gestartet werden, und Tail-Latenzen von 200 us bei 99,9 Perzentil. Wenn Ihre Anwendungen konsistent niedrige Latenzen erfordern, empfehlen wir, die neueste Version der ENA-Treiber auf Instances mit fester Leistung, die auf dem Nitro-System basieren.

Konfigurieren von RSS-CPU-Affinität

Empfangsseitige Skalierung (RSS, Receive Side Scaling) wird verwendet, um die CPU-Auslastung von Netzwerkverkehr auf mehrere Prozessoren zu verteilen. Standardmäßig ist für die offiziellen Amazon Windows-AMIs RSS aktiviert. ENA-ENIs stellen bis zu acht RSS-Warteschlangen bereit. Durch das Definieren der CPU-Affinität für RSS-Warteschlangen und andere Systemprozesse lässt sich die CPU-Auslastung auf Multi-Core-Systeme verteilen, wodurch mehr Netzwerkverkehr verarbeitet werden kann. Bei Instance-Typen mit mehr als 16 vCPUs empfehlen wir die Verwendung des Set-NetAdapterRSS PowerShell Cmdlets, das den Startprozessor (logische Prozessoren 0 und 1, wenn Hyperthreading aktiviert ist) manuell aus der RSS-Konfiguration für alle ENIs ausschließt, um Konflikte mit verschiedenen Systemkomponenten zu vermeiden.

Windows unterstützt Hyper-Threading und stellt sicher, dass die RSS-Warteschlangen einer einzelnen NIC immer in verschiedenen physischen Cores platziert werden. Sofern Hyper-Threading nicht deaktiviert ist, sollten Sie die RSS-Konfiguration jeder NIC auf einen Bereich von 16 logischen Prozessoren verteilen, um Konflikte unter anderen NICs vollständig zu vermeiden. Mit dem Set-NetAdapterRss Cmdlet können Sie den Bereich gültiger logischer Prozessoren pro NIC definieren, indem Sie die Werte von,,, und (optional) definieren. BaseProcessorGroup BaseProcessorNumber MaxProcessingGroup MaxProcessorNumber NumaNode Wenn es nicht genügend physische Cores gibt, um Konflikte zwischen NICs vollkommen zu beseitigen, sollten Sie die überlappenden Bereiche minimieren oder die Anzahl der logischen Prozessoren in den ENI-Bereichen abhängig von den voraussichtlichen Workload der ENI reduzieren (das heißt, ggf. müssen einer Administrator-Netzwerk-ENI mit geringem Volumen nicht so viele RSS-Warteschlangen zugewiesen werden). Zudem müssen, wie zuvor erwähnt, verschiedene Komponenten in der CPU 0 ausgeführt werden. Daher wird empfohlen, sie aus allen RSS-Konfigurationen auszuschließen, wenn genügend vCPUs verfügbar sind.

Wenn es beispielsweise drei ENIs auf einer Instance mit 72 vCPU gibt, die 2 NUMA-Knoten mit aktiviertem Hyper-Threading aufweist, wird mit den folgenden Befehlen die Netzwerklast zwischen zwei CPUs ohne Überlappung verteilt, sodass die Verwendung des Cores 0 vollständig verhindert wird.

Set-NetAdapterRss -Name NIC1 -BaseProcessorGroup 0 -BaseProcessorNumber 2 -MaxProcessorNumber 16 Set-NetAdapterRss -Name NIC2 -BaseProcessorGroup 1 -BaseProcessorNumber 0 -MaxProcessorNumber 14 Set-NetAdapterRss -Name NIC3 -BaseProcessorGroup 1 -BaseProcessorNumber 16 -MaxProcessorNumber 30

Beachten Sie, dass diese Einstellungen für jeden Netzwerkadapter bestehen bleiben. Wenn die Größe einer Instance geändert wird und die Instance danach eine andere Anzahl von vCPUs hat, sollten Sie die RSS-Konfiguration für jede aktivierte ENI erneut auswerten. Die vollständige Microsoft-Dokumentation für das Set-NetAdapterRss-Cmdlet finden Sie hier: https://docs.microsoft.com/en-us/powershell/module/netadapter/set-netadapterrss.

Besonderer Hinweis für SQL-Workloads: Wir empfehlen auch, die I/O-Threadaffinitätseinstellungen zusammen mit Ihrer ENI-RSS-Konfiguration zu prüfen, um I/O- und Netzwerkkonflikte für dieselben CPUs zu minimieren. Weitere Informationen finden Sie unter Affinitätsmaske (Serverkonfigurationsoption).