TenForward

技術ブログ。はてなダイアリーから移転しました

SR-IOV を有効にする(3)

企画第 3 弾.SR-IOV を有効にする (2) - TenForwardの日記 の続編.

きちっとギガのスイッチをはさんでリモートのホストからベンチマークを実行してみました.

ちなみにゲスト OS は CPU コアを 1 つ割り当てており,メモリは 1024MB です.

(2011/12/26: vhost-net でネットワーク構成を macvtap(bridgeモード) にした場合の結果を追記しました)

iperf

Iperfスループットを見てみました.

TCP
$ iperf -s (サーバ側)
$ iperf -c 172.16.44.12

実行はサーバ側,クライアント側ともデフォルトです.実行中の VM が稼働しているホストの CPU 負荷も測定しました.3 回実行した時の平均値です.

仮想NIC iperf(Mbits/sec) %user %system
e1000 511 10.91 15.44
virtio-net 933 10.66 16.06
vhost-net 935 10.50 15.01
vhost-net(macvtap) 936 10.78 8.80
SR-IOV 936 12.77 3.50

ギガのネットワーク程度では virio-net/vhost-net でも充分にスループットが得られるので,差はありませんが,SR-IOV の時の CPU 負荷が全然違います.

UDP (2011/12/14 追記,2011/12/15 更新)

UDP でパケットサイズを小さくしてやってみました.このやりかたでいいのかイマイチ iperf が判ってませんが.

(2011/12/15 更新) iperf で以下のようにテストをするとかなりパケットをロストするので,再テストをしてロストした割合も掲載しました.

$ iperf -s -u (サーバ側)
$ iperf -c 172.16.44.12 -u -l 50 -b 1000M
仮想NIC iperf (Mbits/sec) %user %system lost(%)
e1000 12.9 6.06 16.13 52.7
virtio-net 20.5 12.0 17.3 25.0
vhost-net 13.4 6.62 13.65 51.7
vhost-net(macvtap) 18.47 9.10 7.12 32.7
SR-IOV 20.5 5.96 0.92 26.0

SR-IOV は CPU 負荷が低いというのはわかりますが,それ以外はイマイチ判らない結果... ^^;

(追記ここまで)

LMbench (lat_tcp)

LMbench - Tools for Performance Analysis (LMbench3) の lat_tcp コマンドを使ってレイテンシを測定してみました.

こちらもそのまま実行しただけです.

$ lat_tcp -s (サーバ側)
$ lat_tcp 172.16.44.12 (クライアント側)
仮想NIC lat_tcp(microseconds)
e1000 235
virtio-net 285
vhost-net 231
vhost-net(macvtap) 211
SR-IOV 491

なんか良くわからない結果です (^^;).

netperf(UDP_STREAM) (2011/12/15 追記)

netperf を以下のように実行してみました.

$ netperf -t UDP_STREAM -H 172.16.44.12 -- -m 50
仮想NIC netperf (Mbits/sec) %user %system
e1000 18.31 5.07 26.93
virtio-net 24.83 9.55 28.71
vhost-net 66.67 12.02 30.98
vhost-net(macvtap) 97.26 14.80 11.51
SR-IOV 55.21 12.69 1.44

ちゃんと測定するにはちょっとそれぞれのツールがどういう処理をしているかも調べないとダメですが,とりあえず.