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割り当 ての影響を調査
© Copyright 2025 ExpyDoc