7

最近、私はたくさんのWebサイトを読んでいて、10gb / s NIC、それらのDMA、およびLinuxカーネル(10/100 mb / s NIC)によるデータの処理方法に関する本を読んでいます。いくつかの質問が思い浮かびました。

NICからユーザーランドに10GB/秒のデータフローを送信する最も簡単な方法は何でしょうか(ユーザーランドのデータを同じ速度で処理できると思います)。

ユーザースペース内にDMAバッファーを実装して、そこから生データを直接読み取る(そして明らかに同じレートで処理する)のは良い考えだと思いますか?

または私が考えていなかった彼らのより良い解決策です:/

ありがとうございました。

4

3 に答える 3

6

Linux の通常のソケットを使用するのが最も簡単です。最も効率的ではないかもしれませんが、最も簡単です。

ユーザー空間でデータを非常に効率的に送受信できるフレームワークがあります。同じバッファーを NIC (DMA) とプロセスにマップするため、データをコピーする必要はありません。
これらのフレームワークはカーネルを完全にバイパスします。NIC と直接やり取りする必要があります。このようなフレームワークには、たとえば、PF-RINGNetmapがあります。

于 2012-06-21T13:24:18.170 に答える
2

また、netmap_ pf_ring は概念を隠し、ユーザー空間での単純なマルチコア パケット処理を可能にします。

于 2012-07-17T08:15:07.733 に答える
0

Ottawa Linux Symposium で Intel の何人かが、あなたが提案したものを正確に実装した話を聞いたのを覚えています。彼らが通常のソケット インターフェイスと比較して結果を測定したところ、多くの作業負荷に対して、このアプローチがソケット インターフェイスよりも優れたパフォーマンスを発揮せず、場合によっては劣る (!) ことを発見して驚きました。

検索しましたが、正確な論文をオンラインで見つけることができませんでしたが、これがヒントになるかもしれません...

于 2012-07-17T08:40:08.033 に答える