CPU - KSL

1
仮想マシンの並列処理性能に対する
CPU割り当ての影響の評価
九州工業大学情報工学部機械情報工学科
光来研究室B4
11237054
中田 理公
2
VMでの並列アプリケーション実行

マルチコア・プロセッサの普及



2つ以上のCPUコアを搭載したプロセッサ
アプリケーションの並列化が不可欠に
仮想マシン(VM)で並列アプリケーションを動作さ
せることも多くなってきた

クラウドコンピューティングの普及
並列アプリケーション
スレッド スレッド スレッド スレッド
CPU
コア
計算機
CPU
コア
プロセッサ1
CPU
コア
CPU
コア
プロセッサ2
3
VMへのCPU割り当て

VMの仮想CPUにプロセッサ内のCPUコアを割り当
てて実行


計算機上で複数のVMを動かせるようにするため
割り当て方法


スケジューリングによる動的な割り当て
CPUアフィニティによる固定的な割り当て
VM 2
VM 1
仮想
CPU
仮想
CPU
仮想
CPU
CPU
コア
CPU
コア
CPU
コア
プロセッサ1
計算機
仮想
CPU
CPU
コア
プロセッサ2
4
CPU仮想化の影響

VMへのCPU割り当てによっては並列アプリケー
ションの処理性能に大きな影響を及ぼす可能性


VM内のアプリケーションやOSにCPU割り当ての詳細は分
からない
OSはプロセッサを意識してスケジューリングを行うこと
が多い

例:1つのアプリケーションにはできるだけ同一プロセッサ内の
CPUコアを使わせる
CPU
コア0
...
CPU
コア?
プロセッサ1
計算機
VM
仮想
CPU
仮想
CPU
CPU
コア
...
プロセッサ2
...
プロセッサ?
5
研究の目的

VMへのCPU割り当てがアプリケーションの並列処
理性能にどのような影響を与えるかを調査

対象とする並列アプリケーション

Tascell [1] により並列化されたフィボナッチ数の計算

fib(n) = fib(n-1) + fib(n-2)
5
4
3
3
2
2
1
スレッド2
スレッド1
2
1
[1] T. Hiraishi, et al., Backtracking-based Load Balancing, In Proc. Symp. PPoPP 2009.
6
実験環境

計算機




プロセッサ : Opteron 6376 2.3GHz (16コア) 2基
メモリ : 320GB
仮想化ソフトウェア : Xen 4.4.0
仮想マシン



VM
仮想
CPU0
仮想CPU : 16個
メモリ : 4GB
OS : Linux 3.13.0
CPU
コア0
...
CPU
コア15
プロセッサ1
計算機
...
仮想
CPU15
CPU
コア16
...
CPU
コア31
プロセッサ2
7
実環境との性能比較
VMに同一プロセッサ内のCPUコア16個を割り当てた



24%程度の仮想化オーバヘッドがある
4スレッド以上で性能向上が鈍化
8スレッドを超えると再び性能が大きく向上
128
VM
64
実環境
時間 [s]

32
16
8
4
1
2
4
スレッド数
8
16
8
CPU割り当ての影響
VMに2基のプロセッサからCPUコア16個を割り当てた


2基に分散させる比率により性能が異なる
均等に分散させた場合(8-8)が最も性能がよい

1基だけの場合と比べて最大38%の性能向上
128
64
時間 [s]

32
16
8
0-16
1-15
2-14
3-13
5-11
6-10
7-9
8-8
4-12
4
1
2
4
スレッド数
8
16
9
CPUコアの競合の調査

Opteron 6376はCMT (Clustered Multi-Thread) を採用

CPUコア2つで1つのモジュールを構成


命令デコーダ、L2 キャッシュなどを共有
同一モジュール内の2つのCPUコアを同時に使用すると競
合して性能が低下する可能性がある
モジュール 0
モジュール 1
命令デコーダ
命令デコーダ
CPU
コア0
CPU
コア1
L2キャッシュ
プロセッサ
CPU
コア2
CPU
コア3
L2キャッシュ
10
競合モジュール数の測定

各CPUコアの使用率を測定し、CPUコアが2つとも
使われているモジュールを競合と判断


競合モジュール数と性能は強く相関
競合モジュール数が大きいほど性能が低下
128
8
0-16
7
8-8
0-16
64
6
時間 [s]
競合モジュール数
9
5
4
8-8
32
16
3
2
8
1
0
4
0
2
4
6
8
10
スレッド数
12
14
16
1
2
4
スレッド数
8
16
11
8-8の場合のCPU使用状況

モジュールが正しく考慮されている

8スレッドまで競合しないようにCPUコアを使用


性能が向上
8スレッド以上では使用するCPUコアが競合を起こす

性能が向上しにくくなる
モジュール0 モジュール1
CPU CPU
コア0 コア1
CPU CPU
コア2 コア3
CPU CPU
コア4 コア5
CPU CPU
コア6 コア7
CPU CPU
コア8 コア9
CPU CPU
コア10 コア11
CPU CPU
コア12 コア13
CPU CPU
コア14 コア15
CPU CPU
コア18 コア19
CPU CPU
コア20 コア21
CPU CPU
コア22 コア23
CPU CPU
コア24 コア25
CPU CPU
コア26 コア27
CPU CPU
コア28 コア29
CPU CPU
コア30 コア31
プロセッサ1
CPU CPU
コア16 コア17
プロセッサ2
12
0-16の場合のCPU使用状況

8-8の場合とCPUコアの使われ方が異なる



4スレッドを超えるとCPUコアの競合が発生
8スレッドを超えると再び競合しないようにCPUコアを使用
12スレッドを超えると再び競合
モジュール0 モジュール1
CPU CPU
コア0 コア1
CPU CPU
コア2 コア3
CPU CPU
コア4 コア5
CPU CPU
コア6 コア7
CPU CPU
コア8 コア9
CPU CPU
コア10 コア11
CPU CPU
コア12 コア13
CPU CPU
コア14 コア15
CPU CPU
コア18 コア19
CPU CPU
コア20 コア21
CPU CPU
コア22 コア23
CPU CPU
コア24 コア25
CPU CPU
コア26 コア27
CPU CPU
コア28 コア29
CPU CPU
コア30 コア31
プロセッサ1
CPU CPU
コア16 コア17
プロセッサ2
13
原因となるスケジューラの特定

どちらのスケジューラに原因があるか調べた

OSのスレッドスケジューラを無効化


Xenの仮想CPUスケジューラを無効化


影響なし
挙動が大きく変化した
Xenのスケジューラの問題であることがわかった
OS無効化
Xen無効化
0-16
64
0-16
64
時間 [s]
時間 [s]
8-8
16
8-8
16
4
4
1
2
4
スレッド数
8
OSのスケジューラを無効化
16
1
2
4
スレッド数
8
Xenのスケジューラを無効化
16
14
Xenのスケジューラの問題の分析

ユーザによるCPU割り当てとXenによるCPUコアの
グループ化の競合が原因

Xenはプロセッサの前半8コアと後半8コアをグループ化



今回の実験では、2基のプロセッサの前半8コアを優先的に使用
8-8の場合、各プロセッサの前半8コアを均等に使用
0-16の場合、プロセッサ2の前半8コアを先にすべて使用
モジュール0 モジュール1
CPU CPU
コア0 コア1
CPU CPU
コア2 コア3
CPU CPU
コア4 コア5
CPU CPU
コア6 コア7
CPU CPU
コア8 コア9
CPU CPU
コア10 コア11
CPU CPU
コア12 コア13
CPU CPU
コア14 コア15
CPU CPU
コア18 コア19
CPU CPU
コア20 コア21
CPU CPU
コア22 コア23
CPU CPU
コア24 コア25
CPU CPU
コア26 コア27
CPU CPU
コア28 コア29
CPU CPU
コア30 コア31
プロセッサ1
CPU CPU
コア16 コア17
プロセッサ2
15
モジュールを考慮したCPU割り当て
常に競合が起きないようにモジュール内の1つの
CPUコアのみを16個割り当てた


16スレッドまでほぼ理想的に性能が向上
8スレッド以上では実環境とほぼ同等
128
8-8(最適化)
実環境
64
時間 [s]

32
16
8
4
1
2
4
スレッド数
8
16
16
関連研究

VM上で並列アプリケーションを動かす際の性能低下
の原因がいくつか報告されている

ロックホルダ・プリエンプション [Uhlig et al. '04]


ロックを保持しているスレッドに割り当てられたCPUが他
のスレッドに奪われることで処理が進まなくなる現象
vCPUスタッキング [Sukwong et al. '11]

ロックを待っているスレッドがロックを保持しているス
レッドより先にCPUを得たため処理が進められない現象
17
まとめ

CPUの割り当てがアプリケーションの並列処理性能
に大きな影響を与えることが分かった




CPUコアの競合の度合いが変わることが原因
Xenのスケジューラの問題であることが分かった
モジュールを考慮したCPU割り当てにより、性能を大幅に
改善することができた
今後の課題


モジュールをよりよく考慮したスケジューラの開発
今回用いたアプリケーション以外についても、CPU割り当
ての影響を調査