web-dev-qa-db-ja.com

Intel X520-DA2 10Gbを改善する方法NICジャンボパケットなしのスループット

これが私がこれまでに行ったことです:

より多くのRx/Txバッファーを使用すると、デフォルトから最もパフォーマンスが向上します。各アダプターでRSSキューを4に設定し、2番目のポートの開始RSS CPUを0以外の値に指定しました(使用しているPCでは16コア、16コア、32 HT)。

ProcessExplorerを見ると、RSSが有効になっていても、CPUが多数の着信割り込みを処理する能力に制限があります。 2.xモードでPCIe x8(電気)スロットを使用しています。 2つのアダプタはそれぞれ5GT /秒のx8バスに接続します。

OSの応答性は重要ではありませんが、I/Oスループットは重要です。クライアントがジャンボパケットを処理できないことに制限されています。

次にどの設定を試すべきですか?

詳細:デュアルXeon-E5 2665、32 GB RAM、RAID0に8つのSSD(NIC perf検証にRAMDriveを使用)、400クライアントからIIS/FTP経由で1TBデータを移動、できるだけ早く。

コメントへの応答:

RAMドライブへの10Gb /秒リンクのチーム化されたペアでの実際の読み取りスループットは650 MB /秒

アンチウイルスとファイアウォールはオフになっています、AFAICT。 (この場合、PCに何をインストールするかをかなりうまく制御できます。どのフィルターもパフォーマンスを低下させていないことをどのように確認できますか?追跡する必要がありますが、良い点です。)

プロセスエクスプローラーで、CPUが継続する時間(赤、カーネル時間)が表示されますが、ネットワークとディスクI/Oが停止しています

最大RSSプロセッサはデフォルト値の16です

メッセージシグナル割り込みは、X520-DA2デバイスの両方のインスタンスでサポートされ、MessageNumberLimitが18に設定されています。

A way to check MSI support

ProcExp summary

enter image description here

5
GregC

高性能NICの問題の1つは、最新のPCアーキテクチャが追い付くのに少し問題があることです。しかし、あなたの場合、これはそれほど問題ではありません。説明させてください。

CPUは、TCPパケットを処理する多くの作業を行う必要があります。これはスループットに影響します。ケースで制限しているのはネットワークハードウェアではなく、ネットワークリンクを飽和させるサーバーの機能です。

最近では、チェックサムオフロードのように、CPUからNICへの処理の移行が見られます。インテルは、負荷をさらに軽減するための機能も追加しました。それはクールで、すべての最適化機能がオンになっていると確信しています。

先ほど触れたように、ジャンボフレーム-実際にはスループットが多少向上します。 [〜#〜] rdma [〜#〜] ほどではありません。

ほとんどの10GBitイーサネットハードウェアには、RDMAまたはリモートダイレクトメモリアクセスと呼ばれる、十分に活用されていない機能があります。これにより、NICは、CPUの介入なしに、ネットワーク経由でメモリからメモリへのコピーを実行できます。さて、CPUがNICに何をすべきかを指示し、次にNICが残りを行います。問題は、まだあまり使用されていないことです。しかし、それはそこに到達しています。どうやら、最新バージョンのMicrosoft Windows Server 2012では、 SMB Direct と呼ばれるものがあります。 RDMAを使用します。したがって、スループットを向上させたい場合は、それを使用します。

いくつかのテストハードウェアをまとめてそこにインストールし、そのパフォーマンスを確認できますか?

ちなみに、10Gビットでそれがそれほど表示されるかどうかはわかりませんが、高速RAMは、RDMA、特に56GビットInfinibandに役立ちます。一般に、サーバーがサポートする最速のRAMを使用するのが最善です。

上記のSMB直接リンクに関するこのコメントにも注意してください。

ネットワークアダプターのRDMA機能を使用する場合は、RDMA対応のネットワークアダプターをチーム化しないでください。チーム化すると、ネットワークアダプターはRDMAをサポートしなくなります。


更新:何らかの理由で、すべての10GBit NICがRDMAをサポートしていないようです。したがって、まずモデルの機能を確認してください。

私がもう1つ考えたのは、テストの実行に使用されているプロトコルの種類が結果に影響している可能性があることでした。つまり、TCPオーバーヘッドに加えてプロトコルオーバーヘッド。 iperfなどのハードドライブに触れずにテストできるものを使用することを検討することをお勧めします。どこかにそれのwindowsポートがあります。

4
Matt

私はこの質問を考えています: なぜ私のギガビットボンドは少なくとも150 MB/sのスループットを提供しないのですか? はあなたの問題に関連しています。そこでDell PowerEdge 6950について話していました。答えは基本的に、割り込みを減らすために「ジャンボフレームを使用する」でした。ネットワークカードのオフロードエンジンを調整すると役立つ場合があると思いますが、W2K8R2でそれを行う方法がわかりません。

Idea:ネットワークカードのバッファ数を増やし、バッファ内のパケットの割り込みトリガーを上げて、各割り込みがより多くのパケットを処理するようにします(つまり、パスそれらをOS-IP-stackに追加します)。

このリンクを参照してください: 10 Gbのethtoolを使用した合体パラメーターの設定 これは私が基本的に参照しているものです。

1
Nils

CPU使用率のスクリーンショットは、2つの潜在的なボトルネックを示しています。

  1. 4つのコアがカーネルの作業を最大限に実行している(つまり、おそらくハンドラーがパケットを処理している割り込みハンドラー)
  2. 1コアが最大に達しました-主に-ユーザーモード

前者に対処するには:

  • 割り込みモデレート設定を変更してみてください。ドライバーによっては、オン/オフだけではありません。モデレーション戦略を設定できる場合があります
  • すべてのオフロード機能を無効/有効にしてみてください(この場合、無効にすることは、機能がオフロードされる(シングルコア)NICから(マルチコア)プロセッサーに潜在的なボトルネックを移動するために役立つ場合があります) )
  • ドライバーが提供する可能性のあるさまざまな「Large Receive ...」、「Large Transmit ...」などの機能を使用して、「TCPの受信時に」「合体受信」を有効にしてみてください。
  • RSSキューを4より大きい値に設定できませんか? 2つのポートの1つだけが使用されているようです(ご存知のように、2つ目のポートを少なくとも4(または8、HTをカウントする必要があるかどうか不明)に設定していると思います)
  • 1つのアドレス/ポート/プロトコル5-タプル(または非TCP/UDPトラフィックのアドレス/プロトコル3-タプル)は常に持つため、可能な場合は、使用するさまざまなTCP/UDPポートの数、またはIP送信元/ターゲットアドレスを増やします。 RSS設定に関係なく同じコアに移動する

後者について(実際に使用しているアプリがわからない):

ユーザーモードで最大になっているその1コアがシングルスレッド(またはシングルスレッドのボトルネック)アプリを示している場合、それは

  • 固定、または
  • 再構成(たとえば、可能であれば#ワーカースレッドを増やす)、または
  • 再設計された

取るに足らないこともあれば、そうでないこともある複数のコアを使用する。

また、アプリ(実際にアプリの場合)として、NUMAノード#1で実行されているようですが、カーネルによるパケット処理はNUMAノード#0で行われます。

  • アプリをNUMAノード#0にアフィニティ化してみてください

例えば。タスクマネージャーでプロセスを右クリックすると、少なくともWin2012R2では、プロセスを変更するオプションが表示されます。私はそれを試しましたが、私にとっては助けにはなりませんでしたが、キャッシュヒット率を向上させる可能性があるため、試してみる価値はあります。

ところで、問題のマシンは送信していますか?受け取る?両方とも?パフォーマンスのためにシステムを構成するという点では、送信と受信はほぼ完全に無関係ですが、上記の提案は両方をカバーしています。

0