InfiniBandをPCIパススルーで用いる
仮想化HPCクラスタの性能評価	
高野了成、池上努、広渕崇宏、田中良夫!
!
産業技術総合研究所 情報技術研究部門	
SACSIS2011@秋葉原 2011年5月25日
背景	
•  Amazon EC2等、計算機ハードウェアそのものを仮
想化するIaaSの実用化が進展
–  サーバ集約によるコスト削減
–  災害時(輪番停電時)に計算・データ処理をオフロード
•  HPCを意識したIaaS(HPCクラウド)の登場
–  Amazon EC2 Cluster Compute/GPU Instances
–  Open Cirrus HPCオンデマンド	
2
IaaS: Infrastructure as a Service
LINPACK実行効率の比較	
0
10
20
30
40
50
60
70
80
90
100
0 50 100 150 200 250 300 350 400 450 500
InfiniBand
Gigabit Ethernet
10 Gigabit Ethernet
※実行効率=(ベンチマーク性能:Rmax)/(理論性能:Rpeak)	
InfiniBand: 80%	
Gigabit Ethernet: 54%	
10 Gigabit Ethernet: 74%	
TOP500 rank	
Efficiency(%)
TOP500 2010年11月時点	
#231 Amazon EC
cluster compute instances	
仮想化オーバヘッドによる
実行効率の低下と推測
高性能とユーザの利便性の両立を目指した、
HPC向けIaaS環境の構築
問題 IO仮想化のオーバヘッドにより、IO intensive、
  latency sensitiveなアプリの実用的な実行が困難
アプローチ VMMバイパス型デバイスの利用
–  物理計算機を1つの仮想計算機が占有
研究の目的	
4
(従来からのHPC研究)
高性能の追求	
(仮想化による恩恵)
ユーザの利便性
・環境整備の省力化
・フォールトトレラント
本研究の成果	
•  InfiniBandをPCIパススルーで用いる仮想化HPC
クラスタを構築し、ハイブリッド並列化プログラムの
性能評価を実施
•  HPC向けIaaSを提供するのに十分実用的な性能を
得られるという見込みを得た
–  仮想化のオーバヘッドはアプリ依存だが、5〜15%程度
–  MPI通信に対するPCIパススルーの効果は大きく、レイテ
ンシに関しては多少のオーバヘッドはあるものの、スルー
プットに関しては物理計算機と遜色ない	
5
6
発表の流れ	
•  背景
•  評価対象の仮想化技術
•  性能評価実験
•  関連研究	
•  まとめ
評価の着目点	
7
•  仮想計算機モニタ: Xen (準仮想化)、KVM(完全仮想化)
•  評価の注目点
–  仮想CPUのスケジューリング
–  メモリ仮想化
–  PCIパススルーの実装方法
仮想CPUスケジューリング	
8
Xen
VM (Xen DomU)	
Xen Hypervisor
Physical
CPU
VCPU
VM
(Dom0)	
Domain
scheduler
Guest OS	
Process
KVM
VM (QEMU process)	
Linux
KVM
Physical
CPU
VCPU
threads
Process
scheduler
Guest OS	
Process
Xenの場合、CPUと
VCPUの対応を固定
しないと性能がでない
メモリ仮想化方式(1)	
9
VA	
 PA	
 GVA	
 GPA	
非仮想化環境	
MMU	
  
(CR3)	
page	
H/W	
OS	
 ページテーブル	
ゲスト仮想アドレス(GVA)
ゲスト物理アドレス(GPA)
ホスト物理アドレス(HPA)	
仮想化環境	
page	
MMU	
  
(CR3)	
Guest
OS	
VMM	
ページテーブル	
VMMはGPAをMMUが解釈できる	
HPAへの変換する必要あり
メモリ仮想化方式(2)	
10
GVA	
 HPA	
 GVA	
 GPA	
 GVA	
 GPA	
GVA	
 HPA	
 GPA	
 HPA	
準仮想化(PVM)	
 シャドウページング(HVM)	
 EPT	
  (HVM)	
MMU	
  
(CR3)	
page	
H/W	
Guest
OS	
VMM	
page	
MMU	
  
(CR3)	
Guest
OS	
VMM	
シャドウページテーブル	
ページテーブル	
ページテーブル	
○性能
×ゲストOSの改変が必要	
○ゲストOSの改変が不要
×SPT維持のオーバヘッド	
page	
MMU	
  
(CR3)	
Guest
OS	
ページテーブル	
VMM	
拡張ページテーブル	
○SPTの問題をプロセッサ
拡張により解決	
×TLBミスのオーバヘッド大
仮想計算機のIOアーキテクチャ	
11
仮想化IO	
VM1	
NIC	
VMM	
Guest
driver	
Physical
driver	
Guest OS	
VM2	
vSwitch	
…	
PCIパススルー
VM1	
NIC	
VMM	
Physical
driver	
Guest OS	
VM2	
…	
SR-IOV
VM1	
NIC	
VMM	
Physical
driver	
Guest OS	
VM2	
…	
Switch (VEB)	
仮想化IO	
 PCIパススルー	
 SR-IOV	
VM間共有	
 ○	
 ×	
 ○	
性能	
 ×	
 ○	
 ○
PCIパススルーの実装	
12
VM1	
NIC	
VMM	
Guest OS	
VM2	
…	
データはデバイスから
仮想計算機のメモリに
直接DMA転送
割込みインジェクション:
割込みはVMMでトラップした後、
仮想計算機に挿入
Xen: ソフトウェアベース実装
(イベントチャネル経由の
メッセージ通知)
KVM: ハードウェア支援の活用
(VMCSの割込み要因フラグを
更新して、VMの実行を再開)
VMCS: Virtual Machine Control Structure
13
発表の流れ	
•  背景
•  評価対象の仮想化技術
•  性能評価実験
•  関連研究	
•  まとめ
評価対象	
メモリ仮想化	
PCIパススルー
(割込みインジェクション)	
BMM	
 -	
 -	
Xen(準仮想化)	
 準仮想化	
 準仮想化	
KVM(完全仮想化)	
 EPT	
 VT-x	
14
•  BMM(非仮想化)、Xen(準仮想化)、KVM(完全仮想化)
•  評価の注目点
–  メモリ仮想化
–  PCIパススルー(割込みインジェクション)の実装	
BMM: Bare Metal Machine
実験環境:AIST Green Cloud	
計算ノード(Dell PowerEdge M610)	
CPU	
 Intel Xeon E5540/2.53GHz x2	
Chipset	
 Intel 5520	
Memory	
 48 GB DDR3	
InfiniBand Mellanox ConnectX (MT26428)	
15
ブレードスイッチ	
InfiniBand	
 Mellanox M3601Q (QDR 16 ports)	
AGCクラスタの1エンクロージャ(16ノード)を使用	
実計算機のソフトウェア	
OS	
 CentOS 5.5	
Linux
kernel	
2.6.18-194.32.1.el5(
KVMの場合は、
2.6.32.28)	
Xen	
 3.4.3	
KVM	
 0.13.50	
仮想計算機環境	
OS	
 CentOS 5.5	
VCPU	
 8	
Memory	
 45 GB
使用ベンチマーク	
•  マイクロベンチマーク
–  Intel MPI Benchmark 3.2
•  HPCアプリケーション
–  NAS Parallel Benchmark (NPB) 3.3.1, class C
•  MPIとOpenMPのハイブリッド版(NPB MZ)のSP、BTを使用
–  Bloss
•  ブロック櫻井・杉浦法を用いた疎行列非線形固有値問題ソルバ	
16
コンパイラ: gcc/gfortran 4.1.2
MPI処理系: Open MPI 1.4 (TransportはInfiniBand)
並列数値計算ライブラリ: Intel Math Kernel Library (MKL) 11.1
MPI片道レイテンシ	
計算ノード内	
 (c)
計算ノード間	
(a) CPUソケット内	
 (b) CPUソケット間	
BMM 0.41 (1.00)	
 0.86 (1.00)	
 1.79 (1.00)	
Xen	
 0.41 (1.00)	
 083 (1.04)	
 3.30 (1.84)	
KVM	
 0.54 (1.32)	
 1.21 (1.46)	
 1.71 (0.96)	
17
•  計算ノード内通信
–  メモリ仮想化のオーバヘッド
–  BMM ≒ Xen > KVM
•  計算ノード間通信
–  IO仮想化のオーバヘッド
–  BMM ≒ KVM > Xen	
計算ノード	
コア	
CPU	
(c)	
IB	
  HBA	
 IB	
  HBA	
(b)	
(a)	
Mem.	
Mem.	
Mem.	
Mem.	
単位はマイクロ秒(括弧内はBMMからの相対値)
MPI PingPong スループット	
18
1
10
100
1000
10000
10 100 1k 10k 100k 1M 10M100M 1G
BMM
Xen
KVM
Message size [byte]	
Bandwidth[MB/sec]	
(a) CPUソケット内通信	
1
10
100
1000
10000
10 100 1k 10k 100k 1M 10M100M 1G
BMM
Xen
KVM
Message size [byte]	
Bandwidth[MB/sec]	
(b) CPUソケット間通信	
メモリ仮想化のオーバヘッド:
 BMM = Xen > KVM
BMMのピーク: 5.7GB/s	
 BMMのピーク: 3.9GB/s	
ノード内通信
MPI PingPongスループット	
19
1
10
100
1000
10000
10 100 1k 10k 100k 1M 10M100M 1G
BMM
Xen
KVM
Message size [byte]	
Bandwidth[MB/sec]	
(a) CPUソケット内通信	
1
10
100
1000
10000
10 100 1k 10k 100k 1M 10M100M 1G
BMM
Xen
KVM
Message size [byte]	
Bandwidth[MB/sec]	
(b) CPUソケット間通信	
1
10
100
1000
10000
10 100 1k 10k 100k 1M 10M100M 1G
BMM
Xen
KVM
Message size [byte]	
Bandwidth[MB/sec]	
(c) ノード間通信	
小メッセージ:
 Xen < KVM	
BMMのピーク:
5.7GB/s	
BMMのピーク:
3.9GB/s	
BMMのピーク: 2.5GB/s	
ノード間通信
Bloss: Block Sugiura-Sakurai
Method	
•  100万次元疎行列の非線形固有値問題
•  MPIとOpenMPの階層的並列プログラム	
20
Rank 0	
線形方程式解法
(必要メモリ10GB)	
固有値ベクトル計算
Rank 0〜N	
760 MB	
1 GB	
1 GB	
350 MB	
Bcast	
Reduce	
Bcast	
Gather	
粗粒度のMPI集団通信
ノード単体計算性能	
21
SP-MZ [sec]	
 BT-MZ [sec]	
 Bloss [min]	
BMM	
 86.45 (1.00)	
 132.06 (1.00)	
 21.00 (1.00)	
Xen 100.12 (1.16)	
 137.66 (1.04)	
 22.38 (1.07)	
KVM	
 104.36 (1.21)	
 144.92 (1.10)	
 22.98 (1.09)	
NPB MZ: 4プロセス x 2スレッド
Bloss: 2プロセス x 4スレッド	
•  メモリ仮想化のオーバヘッドは5〜20%
–  Xen > KVM	
アプリケーション実行時間
0
20
40
60
80
100
0
50
100
150
200
250
4x2 8x2 16x2 32x2 64x2
ParallelEfficiency[%]	
Performance[Mop/stotal]	
x1000	
Number of threads	
BMM
Xen
KVM
BMM (PE)
Xen (PE)
KVM (PE)
NPB MZ: 性能と並列化効率	
22
0
20
40
60
80
100
0
50
100
150
200
250
300
4x2 8x2 16x2 32x2 64x2
ParallelEfficiency[%]	
Performance[Mop/stotal]	
x1000	
Number of threads	
BMM
Xen
KVM
BMM (PE)
Xen (PE)
KVM (PE)
SP-MZ	
 BT-MZ	
並列度が上がるほど、KVMとXenの差が開く
比較的細粒度の通信が影響と推測
Bloss:並列化効率	
23
16ノード(32x4スレッド)
実行時の理論値に対す
る並列化効率
BMM: 92.15 %
Xen: 85.60 %
KVM: 84.49 %
Xen、KVMにおける仮想
化オーバヘッドは約9%
粗粒度通信のプログラ
ムでは両者に差がない
0
20
40
60
80
100
120
2x4 4x4 8x4 16x4 32x4
BMM
Xen
KVM
Ideal
Number of threads	
ParallelEfficiency[%]
得られた知見	
•  メモリ仮想化については、準仮想化を採用するXen
の方がオーバヘッドが軽量
–  ノード単体の仮想化オーバヘッド
•  Xen 5〜15%、KVM 10〜20%
–  特に1コアに1スレッドが張り付くHPCアプリでは、EPTの
TLBミス時のオーバヘッドが露わになる可能性あり	
•  PCIパススルーを用いることで、スループットは
BMMに匹敵するが、レイテンシは増加
–  16ノード並列時の仮想化オーバヘッド
•  NPB MZ(細粒度通信) Xen 30〜40%、KVM 10%
•  Bloss(粗粒度通信) Xen、KVM共に10%
–  Xenの割込みインジェクションのオーバヘッド大と推測
24
25
発表の流れ	
•  背景
•  評価対象の仮想化技術
•  性能評価実験
•  関連研究	
•  まとめ
関連研究	
仮想計算機の通信性能改善
1.  仮想化デバイス処理の最適化
•  性能チューニング [Menon2008]
•  vhost-net
2.  VMMバイパス型IOの利用
•  (ハードウェア) PCIパススルー、SR-IOV
•  (ソフトウェア) VirtIO [Liu2006]
3.  仮想計算機のスケジューリングを考慮した通信
•  vSNOOP [Kangarlou2010]
•  MPI実行時のスケジューリングパラメータ調整 [本庄2010]
26
27
発表の流れ	
•  背景
•  評価対象の仮想化技術
•  性能評価実験
•  関連研究	
•  まとめと今後の予定
まとめ	
•  InfiniBandをPCIパススルーで用いる仮想化HPC
クラスタを構築し、ハイブリッド並列化プログラムの
性能評価を実施
•  HPC向けIaaSを提供するのに十分実用的な性能を
得られるという見込みを得た	
–  仮想化のオーバヘッドはアプリ依存だが、5〜15%程度
–  MPI通信に対するPCIパススルーの効果は大きく、レイテ
ンシに関しては多少のオーバヘッドはあるものの、スルー
プットに関しては物理計算機と遜色ない	
28
今後の予定	
•  明らかになった技術的課題の詳細調査と改良
–  割込みインジェクションのオーバヘッド
•  Latency sensitiveなアプリの評価
–  メモリ仮想化のオーバヘッド
•  追加実験
–  10GbEのPCIパススルー
–  InfiniBandのSR-IOV対応
•  HPC向けIaaSに向けたクラウドスタックへの統合
–  Open Stack
–  Condor VM Universe	
29
予備スライド	
30
ノード単体計算性能 (w/ EC2)	
31
SP-MZ [sec]	
 BT-MZ [sec]	
 Bloss [min]	
BMM	
 86.45 (1.00)	
 132.06 (1.00)	
 21.00 (1.00)	
Xen 100.12 (1.16)	
 137.66 (1.04)	
 22.38 (1.07)	
KVM	
 104.36 (1.21)	
 144.92 (1.10)	
 22.98 (1.09)	
EC2 (Xen HVM)	
 88.00	
 126.01	
 20.00	
EC2)
 CPU: X5570/2.93GHz x2
 Mem: 23 GB	
NPB MZ: 4プロセス x 2スレッド
Bloss: 2プロセス x 4スレッド	
•  仮想化のオーバヘッドは5〜20%	
AGC)
 CPU: E5540/2.53GHz x2
 Mem: 45 GB
アプリケーション実行時間
0
20
40
60
80
100
0
50
100
150
200
250
4x2 8x2 16x2 32x2 64x2
ParallelEfficiency[%]	
Performance[Mop/stotal]	
x1000	
Number of threads	
BMM
Xen
KVM
EC2
BMM (PE)
Xen (PE)
KVM (PE)
EC2 (PE)
NPB MultiZone (w/ EC2)	
32
0
20
40
60
80
100
0
50
100
150
200
250
300
4x2 8x2 16x2 32x2 64x2
ParallelEfficiency[%]	
Performance[Mop/stotal]	
x1000	
Number of threads	
BMM
Xen
KVM
EC2
BMM (PE)
Xen (PE)
KVM (PE)
EC2 (PE)
SP-MZ	
 BT-MZ
Bloss:並列化効率 (w/ EC2)	
33
0
20
40
60
80
100
120
2x4 4x4 8x4 16x4 32x4
ParallelEfficiency[%]
Number of threads
BMM
Xen
KVM
EC2
Ideal
16ノード(32x4スレッド)
実行時の理論値に対す
る並列化効率
BMM: 92.15 %
Xen: 85.60 %
KVM: 84.49 %
EC2: 74.51 %
Xen、KVMにおける仮想
化オーバヘッドは約9%

InfiniBandをPCIパススルーで用いるHPC仮想化クラスタの性能評価