xen4.0 and vt-d network performance benchmark
Post on 04-Jul-2015
1.612 Views
Preview:
TRANSCRIPT
1
Xen 4.0 + vt-d によるネットワークパフォーマンスの計測
2010 年 5 月 15 日木内 <mkiuchi@users.sourceforge.jp>
2
環境
Host01172.16.10.1
Host02172.16.10.2
Host03172.16.10.3
Host04172.16.10.4
L2SW
GW172.16.0.1
192.168.2.45
Monitor192.168.2.35
3
環境
host01~03 host04 domU/ hvm domU/ pvdrv
ハードウェア自作
CPU: Celeron E3300MEM: 4GB(DDR2-800)
HDD: SATA 500GBM/ B: Asus P5KPL-AM EPU
自作CPU: Core i5 650
MEM: 4GB(DDR3-1333)HDD: SATA 500GBM/ B: Intel DQ57TM
BIOS でのvt-d 設定可否 × ○
OSFedora 12(i686)
2.6.32.11-99.f c12.i686.PAE2.6.32.11-1.2.97.xendom0.f c12.i686.PAE
Xen-4.0.0
CentOS 5.4
計測ソフトウェア NetPIPE-3.7.1-2.fc12.i686
4
テスト方法
NetPIPE, TCP を使用
1つのテスト項目につき5回テストを実施し、平均値を取る
エラーで NetPIPE が中断された場合はその項目のみ集計から外す
5
テスト 1-1Host01
172.16.10.1Host04
172.16.10.4
標準カーネルを使用1対1の通信性能を確認
# NPtcp # NPtcp -h host01
6
テスト 1-2Host01
172.16.10.1Host04
172.16.10.4
標準カーネルを使用1対3の通信性能を確認
Host02172.16.10.2
Host03172.16.10.3
# NPtcp
# NPtcp
# NPtcp
#!/bin/shfor i in 1 2 3 4 5; doecho $i/usr/bin/NPtcp -h host01 >> host01 2>&1 &/usr/bin/NPtcp -h host02 >> host02 2>&1 &/usr/bin/NPtcp -h host03 >> host03 2>&1 &waitecho "end"readdone
7
テスト 2-1Host01(dom0)172.16.10.1
Host04(dom0)172.16.10.4
dom0 カーネルを使用 ( host04 の vt-d は Disable )
1対1の通信性能を確認
# NPtcp # NPtcp -h host01
8
テスト 2-2Host01(dom0)172.16.10.1
Host04(dom0)172.16.10.4
dom0 カーネルを使用 ( host04 の vt-d は Disable )
1対3の通信性能を確認
Host02(dom0)172.16.10.2
Host03(dom0)172.16.10.3
# NPtcp
# NPtcp
# NPtcp
#!/bin/shfor i in 1 2 3 4 5; doecho $i/usr/bin/NPtcp -h host01 >> host01 2>&1 &/usr/bin/NPtcp -h host02 >> host02 2>&1 &/usr/bin/NPtcp -h host03 >> host03 2>&1 &waitecho "end"readdone
9
テスト 3-1Host01(dom0)172.16.10.1
Host04(dom0)172.16.10.4
dom0 カーネルを使用 ( host04 の vt-d は Enable )
1対1の通信性能を確認
# NPtcp # NPtcp -h host01
10
テスト 3-2Host01(dom0)172.16.10.1
Host04(dom0)172.16.10.4
dom0 カーネルを使用 ( host04 の vt-d は Enable )
1対3の通信性能を確認
Host02(dom0)172.16.10.2
Host03(dom0)172.16.10.3
# NPtcp
# NPtcp
# NPtcp
#!/bin/shfor i in 1 2 3 4 5; doecho $i/usr/bin/NPtcp -h host01 >> host01 2>&1 &/usr/bin/NPtcp -h host02 >> host02 2>&1 &/usr/bin/NPtcp -h host03 >> host03 2>&1 &waitecho "end"readdone
11
テスト 4-1Host01(dom0)172.16.10.1
Host04(dom0) 172.16.10.4
domU を使用 ( host04 の vt-d は Disable host11 は標準カーネル (no PV driver) )
1対1の通信性能を確認
# NPtcp
Host11(domU-hvm)172.16.10.11
# NPtcp -h host01
eth0(bridge)
tap vifpeth
12
テスト 4-2Host01(dom0)172.16.10.1
domU を使用 ( host04 の vt-d は Disable host11 は標準カーネル (no PV driver) )
1対3の通信性能を確認
Host02(dom0)172.16.10.2
Host03(dom0)172.16.10.3
# NPtcp
# NPtcp
# NPtcp
Host04(dom0) 172.16.10.4
Host11(domU-hvm)172.16.10.11
eth0(bridge)
tap vifpeth
#!/bin/shfor i in 1 2 3 4 5; doecho $i/usr/bin/NPtcp -h host01 >> host01 2>&1 &/usr/bin/NPtcp -h host02 >> host02 2>&1 &/usr/bin/NPtcp -h host03 >> host03 2>&1 &waitecho "end"readdone
※ 通信エラーや不可解な遅延が頻発
13
テスト 5-1Host01(dom0)172.16.10.1
Host04(dom0) 172.16.10.4
domU を使用 ( host04 の vt-d は Enable host11 は標準カーネル (no PV driver) )
1対1の通信性能を確認
# NPtcp
Host11(domU-hvm)172.16.10.11
# NPtcp -h host01
eth0(bridge)
tap vifpeth
14
テスト 5-2Host01(dom0)172.16.10.1
domU を使用 ( host04 の vt-d は Enable host11 は標準カーネル (no PV driver) )
1対3の通信性能を確認
Host02(dom0)172.16.10.2
Host03(dom0)172.16.10.3
# NPtcp
# NPtcp
# NPtcp
Host04(dom0) 172.16.10.4
Host11(domU-hvm)172.16.10.11
eth0(bridge)
tap vifpeth
#!/bin/shfor i in 1 2 3 4 5; doecho $i/usr/bin/NPtcp -h host01 >> host01 2>&1 &/usr/bin/NPtcp -h host02 >> host02 2>&1 &/usr/bin/NPtcp -h host03 >> host03 2>&1 &waitecho "end"readdone
※ 通信エラーや不可解な遅延が頻発
15
テスト 6-1Host01(dom0)172.16.10.1
Host04(dom0) 172.16.10.4
domU を使用 ( host04 の vt-d は Disable host12 は domU(PV driver) )
1対1の通信性能を確認
# NPtcp
Host12(domU-pvdrv)172.16.10.12
# NPtcp -h host01
eth0(bridge)
vifpeth
16
テスト 6-2Host01(dom0)172.16.10.1
domU を使用 ( host04 の vt-d は Disable host12 は domU(PV driver) )
1対3の通信性能を確認
Host02(dom0)172.16.10.2
Host03(dom0)172.16.10.3
# NPtcp
# NPtcp
# NPtcp
Host04(dom0) 172.16.10.4
Host12(domU-pvdrv)172.16.10.12
eth0(bridge)
vifpeth
#!/bin/shfor i in 1 2 3 4 5; doecho $i/usr/bin/NPtcp -h host01 >> host01 2>&1 &/usr/bin/NPtcp -h host02 >> host02 2>&1 &/usr/bin/NPtcp -h host03 >> host03 2>&1 &waitecho "end"readdone
※ 通信エラーや不可解な遅延が頻発
17
テスト 7-1Host01(dom0)172.16.10.1
Host04(dom0) 172.16.10.4
domU を使用 ( host04 の vt-d は Enable host12 は domU(PV driver) )
1対1の通信性能を確認
# NPtcp
Host12(domU-pvdrv)172.16.10.12
# NPtcp -h host01
eth0(bridge)
vifpeth
18
テスト 7-2Host01(dom0)172.16.10.1
domU を使用 ( host04 の vt-d は Enable host12 は domU(PV driver) )
1対3の通信性能を確認
Host02(dom0)172.16.10.2
Host03(dom0)172.16.10.3
# NPtcp
# NPtcp
# NPtcp
Host04(dom0) 172.16.10.4
Host12(domU-pvdrv)172.16.10.12
eth0(bridge)
vifpeth
#!/bin/shfor i in 1 2 3 4 5; doecho $i/usr/bin/NPtcp -h host01 >> host01 2>&1 &/usr/bin/NPtcp -h host02 >> host02 2>&1 &/usr/bin/NPtcp -h host03 >> host03 2>&1 &waitecho "end"readdone
※ 通信エラーや不可解な遅延が頻発
19
結果 1: 1 対 1 の通信
127
99387
15396147
24579983076
16 4564 189
256 7651024 3069
4096 1228516384 49149
65536 196605262144
393219786429
10485761572867
31457254194304
6291459
0.00
100.00
200.00
300.00
400.00
500.00
600.00
700.00
800.00
900.00
1000.00
test1-1test2-1test3-1test4-1test5-1test6-1test7-1
20
結果 2: 1 対 3 の通信
127
99387
15396147
2457998307
39321915728676
16 4564 189
256 7651024 3069
4096 1228516384 49149
65536 196605262144 786429
1048576 31457254194304
6291459
0.00
100.00
200.00
300.00
400.00
500.00
600.00
700.00
800.00
900.00
1000.00
0.00
2.00
4.00
6.00
8.00
10.00
12.00test1-2 平均test1-2 最大test1-2 最小test2-2 平均test2-2 最大test2-2 最小test3-2 平均test3-2 最大test3-2 最小test4-2 平均test4-2 最大test4-2 最小test5-2 平均test5-2 最大test5-2 最小test6-2 平均test6-2 最大test6-2 最小test7-2 平均test7-2 最大test7-2 最小
この辺りが最適サイズか?
21
結論
vt-d の有効 / 無効はほとんどパフォーマンスに影響を与えない (SR-IOV 待ち ?)
Fullvirtualized domU のネットワークパフォーマンスは非常に悪く、エラーも頻発する。可能な限り避けた方がよい (SR-IOV 待ち ?)
Paravirt driver を使用した domU の性能は仮想化を使用しない時に比較して 50%~100% 程度の性能差がある。 32k 前後を分岐点として、ブロックサイズが大きくなるほど性能劣化の傾向が見られる
同時通信が発生する環境でブロックサイズが 16k を超えると、性能のばらつきは大きくなる
top related