mod_cbandのCBandSpeed で帯域制限をすると設定値の約1/3のスループットしか出ない謎

前から疑問に思ってたけど。帯域・同時接続数を制限するCBandSpeed の1つめの引数に帯域を設定できるけど、設定値の約1/3しか出ないっぽい?

<VirtualHost *:80>
  ServerName  foo.example.com
  # snip
  <IfModule cband_module>
    ##               kbps     rps    max_con
    CBandSpeed       30720    100    64
  </IfModule>
</VirtualHost>


dd で作った100MBの空のファイルをwgetしてみる。

$ wget http://foo.example.com/hoge.dat
(snip)
12:07:25 (1.00 MB/s) - `hoge.dat' saved [104857600/104857600]

1MB/s => 8192kbps ≒ 30720 / 3 (10240)


CBandSpeed を20480 kbps で設定してwgetしたときは

$ wget http://foo.example.com/hoge.dat
(snip)
11:54:11 (748.63 KB/s) - `hoge.dat' saved [104857600/104857600]

748KB/s => 5984 kbps ≒ 20480 / 3.0 (6826)


スカスカのwebサーバでも発生するので、負荷の問題ではない。とりあえず、制限したい値の3倍に設定してごまかす。