tl; dr
明確な答えを出すには、さらにテストが必要だと思われます。しかし、状況証拠は、Linuxが超低遅延コミュニティで実際に排他的に使用されるOSであり、Mppsワークロードも定期的に処理することを示唆しています。これは、Windowsでは不可能という意味ではありませんが、Mpps数を達成することは可能かもしれませんが、Windowsはおそらくかなり遅れるでしょう。ただし、テストを確認する必要があります。たとえば、これらの数値を達成できるコスト(CPU)を把握する必要があります。
NBこれは、私が受け入れるつもりの答えではありません。この質問への回答に興味がある人に、私たちがどこにいるか、さらに調査する場所についてのヒントを提供することを目的としています。
グーグルによれば、Windowsネットワーキングのパフォーマンスを向上させるためにRIOをテストした(そして結果を公開した)唯一の人物であるLen Holgateは、彼のブログのコメントで、単一のIP / Portコンボを使用していることを明確にしたUDPパケットを送信します。
言い換えれば、彼の結果はLinuxでのテストのシングルコアの数値とある程度匹敵するはずです(ただし、彼は8つのスレッドを使用していますが、コードをまだチェックしていないので、単一のUDPパケットストリームのみを処理するときのパフォーマンスに有害なようです)パケットの重い処理を行っており、実際に使用されるスレッドはごくわずかであると述べていますが、これは理にかなっています)。それは彼が言っているにもかかわらずです:
古いAPIと新しいAPIの相対的なパフォーマンスを比較するためだけに最大限のパフォーマンスを得ようとはしていなかったので、テストではそれほど徹底的ではありませんでした。
しかし、「一生懸命に努力する」以外のより荒いRIOの世界のために、標準IOCPの(相対的な)快適ゾーンを放棄しているのは何ですか?少なくとも1つのUDPパケットストリームに関する限り。
彼が意味することは、RIOのいくつかのテストでさまざまな設計アプローチを試みたので、たとえば、NIC設定を微調整してパフォーマンスの最後の部分を絞り出さなかったということだと思います。これは、たとえば、受信バッファサイズの場合、UDP受信パフォーマンスとパケット損失の数値に大きなプラスの影響を与える可能性があります。
しかし、彼の結果を他のLinux / Unix / BSDテストの結果と直接比較しようとするときの問題は次のとおりです。ほとんどのテストは、「パケット/秒」境界をプッシュしようとするとき、可能な限り小さいパケット/フレームサイズ、つまりイーサネットを使用します64バイトのフレーム。Lenは1024バイトのパケット(-> 1070バイトのフレーム)をテストしました。これは(特にNo-Nagle UDPの場合)はるかに高い「1秒あたりのビット数」の数値を取得できますが、小さいパケットでは可能な限りpps境界を押し上げることはできません。したがって、これらの数値をそのまま比較するのは公平ではありません。
これまでのWindows UDP受信パフォーマンスの調査結果を要約すると、次のとおりです。
- 超低遅延および/または高スループットのアプリケーションを開発しようとするとき、実際にWindowsを使用している人はいません。最近ではLinuxを使用しています
- 実際には、実際の結果(つまり、単なる製品広告ではない)を含むすべてのパフォーマンステストとレポートは、LinuxまたはBSDで行われています(先駆者であり、少なくとも1つの参考資料を提供してくれたLenに感謝します!)
- WindowsのUDP(標準ソケット)はLinuxより高速/低速ですか?私はまだわからない、私自身のテストをしなければならないだろう
- Windowsでの高性能UDP(RIO対ネットマップ)は、Linuxより高速/低速ですか?Linuxは簡単に、900MHzの、Windowsのではシングルコアとの完全な10Gbの回線速度を扱うに公表最良の場合 1024年の大規模なUDPパケットサイズのために43%または492kppsまで行くことができている、小さなサイズのため、すなわちbpsの数字はおそらく大幅になりますさらに悪いことに、ppsの数値はおそらく上昇します(割り込み処理またはその他のカーネルスペースのオーバーヘッドが制限要因でない限り)。
Linuxを使用する理由については、NetmapやRIOのようなカーネルの変更を伴うソリューションの開発-パフォーマンスを限界に押し上げる場合に必要-Windowsのような閉鎖システムでは、給与がレドモンドから発生しない限り、ほぼ不可能であるため、または、マイクロソフトと何らかの特別な契約を結んでいます。これが、RIOがMS製品である理由です。
最後に、私が発見したことのいくつかの極端な例を挙げただけで、Linuxランドで進行中です。
すでに15年前、800 mHzのPentium III CPU、 1 GbE NICの133 mHzのフロントサイドバスを使用して680kppsを受信していた人もいました。 編集:彼らはClickを使用していました。これは、標準ネットワークスタックの多くをバイパスするカーネルモードルーターです。つまり、「だまされました」。
2013年に、アルゴンデザインが管理を取得します
最低35ns [ナノ秒]のレイテンシーを取引するためにチェックします
ところで彼らはまた
現在の取引用の既存のコンピューティングコードの大部分は、x86プロセッサアーキテクチャ上のLinux用に記述されています。
およびArgonは、(FPGAに加えて)OSを備えたArista 7124FXスイッチを使用します
標準のLinuxカーネルの上に構築されています。