これが私がこれまでに行ったことです:
より多くの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に設定されています。
高性能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ポートがあります。
私はこの質問を考えています: なぜ私のギガビットボンドは少なくとも150 MB/sのスループットを提供しないのですか? はあなたの問題に関連しています。そこでDell PowerEdge 6950について話していました。答えは基本的に、割り込みを減らすために「ジャンボフレームを使用する」でした。ネットワークカードのオフロードエンジンを調整すると役立つ場合があると思いますが、W2K8R2でそれを行う方法がわかりません。
Idea:ネットワークカードのバッファ数を増やし、バッファ内のパケットの割り込みトリガーを上げて、各割り込みがより多くのパケットを処理するようにします(つまり、パスそれらをOS-IP-stackに追加します)。
このリンクを参照してください: 10 Gbのethtoolを使用した合体パラメーターの設定 これは私が基本的に参照しているものです。
CPU使用率のスクリーンショットは、2つの潜在的なボトルネックを示しています。
前者に対処するには:
後者について(実際に使用しているアプリがわからない):
ユーザーモードで最大になっているその1コアがシングルスレッド(またはシングルスレッドのボトルネック)アプリを示している場合、それは
取るに足らないこともあれば、そうでないこともある複数のコアを使用する。
また、アプリ(実際にアプリの場合)として、NUMAノード#1で実行されているようですが、カーネルによるパケット処理はNUMAノード#0で行われます。
例えば。タスクマネージャーでプロセスを右クリックすると、少なくともWin2012R2では、プロセスを変更するオプションが表示されます。私はそれを試しましたが、私にとっては助けにはなりませんでしたが、キャッシュヒット率を向上させる可能性があるため、試してみる価値はあります。
ところで、問題のマシンは送信していますか?受け取る?両方とも?パフォーマンスのためにシステムを構成するという点では、送信と受信はほぼ完全に無関係ですが、上記の提案は両方をカバーしています。