sambaのsocket optionsのSO_SNDBUF/SO_RCVBUFを8kB〜128kBまで変化させてみた結果.

8kBというのは,まだEtherNetが10BaseTだったころからの推奨値.いくらCPUの性能が上がったとはいえ,割り込みレイテンシやContext swichなどなかなかリニアに性能の上がらない要素考えれば,確かにコレが癌だ.ただでさえCPUがNetwork速度に対してLowspecなんだから.元はmssの端数に対してアホな振る舞いするWindows側NICドライバの対策だったけれど,今日日net.inet.tcp.sendspaceとかを大きくする傾向なのだから,mssの端数に合わせるとしても8192のはまずすぎた.net.inet.tcp.sendspaceいじってるなら,むしろし指定しないほうがいい.
ちなみに,8kBのときにpollingモードにすると速度がガタ落ちする.バッファが空になる時間があまりにも短すぎて,様々な処理のレイテンシやpollingにしたことによるレイテンシが,モロに見えてしまっているっぽ.
Filecopyについてはどうにも速度が上がんない.このあたりはレイテンシの遅さや,それこそバスの遅さが効いているのかも知れない.

カテゴリー: 未分類 | コメントする

  • Server->PCの速度が,前回(約680Mpbs)よりも上がっている.TSOの効果かも?とは思うのだが,なんか色々いぢったから正直どうだか分からない.もっぺんカーネルコンパイルするのも面倒.7.0でTSOは正式サポートされるらしい.
  • polling modeはNICからの割り込み回数を減らして,CPUのcontext switchの負荷下げるもの.Apacheのtransaction数の測定例とか見てると効果あるみたいだけど,単純なファイル転送では,ほとんどソレしかしてないから効果がほとんど出ないっぽい.
  • netperfでの測定時に,同時にsystat -ifstatで計ってみた.netperfの測定結果ってEtherNetの物理層bpsではなく,アプリケーション層以降の実データのbps換算ぽ.当然といえば当然か.ならbpsではなくByte/sのほうが適切な希ガス.
  • 速度upの大きな要因は,後述するsambaのsocket optionsのバッファサイズ変更.WriteはWrite Back Buffer(cache)のおかげで速く,ReadはHDDの実性能で頭打ちしてそうなのはなんとなく分かるが,Writeがnetperfの結果よりも高性能をたたき出している.バッファサイズの扱いの違いか.
  • カテゴリー: 未分類 | コメントする

    割とスピードでるようになったけど,不可解な点がいくつか.

    カテゴリー: 未分類 | コメントする

    polling enable polling disable
    netpef
    PC->Server
    netperf 257.77 Mbps 258.54 Mbps
    systat n/a 31.38 MB/s
    netperf
    Server->PC
    netperf 724.59 Mbps 728.20 Mbps
    systat n/a 89.04 MB/s
    HDD bench Write 39,077 Byte/s 39,958 Byte/s
    Read 27,220 Byte/s 27,113 Byte/s
    Copy 7,605 Byte/s 7,680 Byte/s

    カテゴリー: 未分類 | コメントする