パスワードを忘れた? アカウント作成
494880 journal

beroの日記: 最高転送速度を実現したゼロコピーTCP技術の秘密 1

日記 by bero

IPv6の最高転送速度記録更新

ゼロコピーTCP技術とやらが気になったので追っかけてみた

Internet2 Land Speed Recordでは、11のルールを定め、記録を認定しています。以下にルールの要約を示します:

ルール4
使用する機器、ソフトウェアはInternet2の米国メンバーが商品として入手可能か、またはオープンソースソフトウェアであることが必要である。

大学であることを考えるとおそらくオープンソースソフトウェアとして公開していると思われる。
で探すと

http://data-reservoir.adm.s.u-tokyo.ac.jp/lsr-200612-02/
にある
http://data-reservoir.adm.s.u-tokyo.ac.jp/lsr-200612-02/iperf-2.0.2-zerocopy.diff

要するに(f)read/(f)writeじゃなくてmmap/sendfile使ってると思われ
(freadでは、カーネルバッファ-->FILE* 内バッファ-->指定したユーザバッファ、と通常2回コピーされる。)

ルール7
データは、ユーザ空間上のバッファ間で行われ、バッファごとにデータの内容が異なることが必要である。サムチェックなどの方法でデータが正しく伝達されたことを確認することが必要である。

mmapはともかくsendfileはルール7「ユーザ空間上のバッファ間で行われ」に反してる気がする
ただこのルールは現実的じゃないと思った部分なので、反してるほうが現実的テストだとは思うが。

Payload data on each packet are not identical. Modified iperf transfers data from the user-space-buffer to kernel buffer by memory sharing at the sender server. Then contents of kernel buffer are sent to the kernel-buffer of the receiver server. Contents of the kernel buffer are shared to the user program.

Therefore, rule 7 is satisfied.

は送信側・受信側双方でmmapを使うことと思われるが、sendfileはユーザ空間上のバッファは経由せず無関係である。

ただ、パッチだけで全体を見てないので誤解してるかもしれない。例えば
1.ユーザ空間上のバッファからローカルファイルに書き出す
2.ローカルファイルからsendfileする
というような2段階の全体の時間を計測していればルール7には反しないだろう。(またはこのsendfile機能を使わないモードで計測してれば)

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • カーネルに転送のioctl(Asyncでとか)で送信処理とかさせることがNGという意味でいいんではないでしょうか。

    カーネル空間で確保したメモリとはいえ、一応、ユーザーランドアプリで処理できるし転送の制御もユーザーランドでやってるし。

    さすがカーネルが確保したメモリがNGっていうなら、ある意味mallocとかもだめな場合もあるし、今回のも棄却されてたように思う。

    でもDMAで送るにはmmapがDMAableでないといけないと思うけど、オプションがわかんね。
    # NetI/F ドライバ作ったことあるくせに>自分(w

    # つれづれなるままに、駄文
    --
    M-FalconSky (暑いか寒い)
typodupeerror

Stableって古いって意味だっけ? -- Debian初級

読み込み中...