オペレーティングシステムの最適化 - Amazon Elastic Compute Cloud

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

オペレーティングシステムの最適化

ネットワーキングが拡張されたインスタンスで最大のネットワークパフォーマンスを実現するには、デフォルトのオペレーティングシステムの設定を変更する必要がある場合があります。高いネットワークパフォーマンスを必要とするアプリケーションには、次の設定変更をお勧めします。 その他の最適化 (チェックサムオフロードをオンにしてRSS を有効にするなど) は、公式の Windows AMI で既に行われています。

注記

TCP Chimney オフロードはほとんどのユースケースで無効にする必要があり、Windows Server 2016 では廃止されています。

これらのオペレーティングシステムの最適化に加えて、ネットワークトラフィックの最大送信単位 (MTU) も考慮し、ワークロードとネットワークアーキテクチャーに応じて調整する必要があります。詳細については、「EC2 インスタンスのネットワークの最大送信単位 (MTU)」を参照してください。

AWS では、99.9 パーセンタイルで 50us のクラスタープレイスメントグループで起動されたインスタンスと 200us のテールレイテンシーの間のラウンドトリップレイテンシーを定期的に測定しています。アプリケーションで一貫して低レイテンシーが必要な場合、Nitro System で構築された固定パフォーマンスインスタンスで最新バージョンの ENA ドライバーを使用することをお勧めします。

RSS CPU アフィニティを設定する

受信側スケーリング (RSS) は、複数のプロセッサにネットワークトラフィック CPU 負荷を分配するために使用されます。デフォルトでは、公式 Amazon Windows AMI は、RSS を有効にして設定され、RSS を許可します。ENA ENI は最大 8 つの RSS キューを提供します。RSS キューやその他のシステム処理の CPU アフィニティを定義することで、マルチコアシステムで CPU の負荷を分散することができ、より多くのネットワークトラフィックを処理できます。vCPU が 16 を超えるインスタンスタイプでは、Set-NetAdapterRSS PowerShell cmdlt (Windows Server 2012 以降から入手可能) を使用することをお勧めします。これは、ブートプロセッサ (論理プロセッサ 0 と 1 の場合は論理プロセッサ 0 と 1) を手動で除外します。さまざまなシステムコンポーネントとの競合を防ぐために、すべての ENI の RSS 設定からハイパースレッディングが有効になっています。

Windows はハイパースレッド対応で、単一の NIC の RSS キューが常に異なる物理コアに配置されるようにします。したがって、ハイパースレッディングが無効になっていない限り、他の NIC との競合を完全に防ぐために、各 NIC の RSS 設定を 16 個の範囲の論理プロセッサ間で分散します。Set-NetAdapterRss cmdlt を使用すると、BaseProcessorGroup、BaseProcessorNumber、MaxProcessingGroup、MaxProcessorNumber、および NumaNode (オプション) の値を定義することによって、NIC ごとの有効な論理プロセッサの範囲を定義できます。NIC 間の競合を完全に排除するのに十分な物理コアがない場合、ENI の予想されるワークロードに応じて、ENI 範囲内の論理プロセッサの数を減らします(つまり、少量の管理ネットワーク ENI には、割り当てられた RSS キューを多くは必要としない場合があります)。また、上記のように、さまざまなコンポーネントを CPU 0 で実行する必要があるため、十分な vCPU が利用可能な場合は、すべての RSS 構成から除外することをお勧めします。

たとえば、ハイパースレッディングが有効になっている 2 つの NUMA ノードを持つ 72 の vCPU インスタンスに 3 つの ENI がある場合、次のコマンドは 2 つの CPU 間でネットワーク負荷を重複なく分散させ、コア 0 の使用を完全に防ぎます。

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

これらの設定は各ネットワークアダプターに対して永続的であることに注意してください。インスタンスの vCPU 数が異なるインスタンスにサイズ変更された場合は、有効になっている ENI ごとに RSS 設定を再評価する必要があります。Set-NetAdapterRss cmdlt に関するマイクロソフトのドキュメントは、こちらにあります。https://docs.microsoft.com/en-us/powershell/module/netadapter/set-netadapterrss

SQL ワークロードに関する特記事項: 同じ CPU に対する IO およびネットワークの競合を最小限に抑えるために、ENI RSS 構成とともに IO スレッドアフィニティ設定を確認することをお勧めします。affinity mask Server Configuration Option を参照してください。