VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化

Slides:



Advertisements
Similar presentations
ファイルキャッシュを考慮したディスク監視のオフロード
Advertisements

セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
クラウドにおける ネストした仮想化を用いた 安全な帯域外リモート管理
Xenを用いたクラウドコンピュー ティングにおける情報漏洩の防止
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
全体ミーティング (4/25) 村田雅之.
中村孝介(九州工業大学) 光来健一(九州工業大学/JST CREST)
KVMにおけるIDSオフロードのための仮想マシン監視機構
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
クラウドにおけるライブラリOSを用いた インスタンス構成の動的最適化
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
クラウドにおけるアプリケーション単位での VM構成の動的最適化
大きな仮想マシンの 複数ホストへのマイグレーション
ネストした仮想化を用いた VMの安全な帯域外リモート管理
ネットワーク性能に合わせた 分散遺伝的アルゴリズムにおける 最適な移住についての検討
帯域外リモート管理の継続を 実現可能なVMマイグレーション手法
VMマイグレーションを可能にするIDSオフロード機構
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
クラウドの内部攻撃者に対する安全なリモートVM監視機構
アスペクト指向プログラミングを用いたIDSオフロード
サスペンドした仮想マシンの オフラインアップデート
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
過負荷時のWebアプリケーションの 性能劣化を改善する Page-level Queue Scheduling
過負荷時の分散ソフトウェアの 性能劣化を改善する スケジューリングの提案
KVMにおける仮想マシンの 内部監視機構の実装と性能評価
セキュリティ機構のオフロードを考慮した 仮想マシンのスケジューリング
分散IDSの実行環境の分離 による安全性の向上
VMのメモリ暗号化による クラウド管理者への情報漏洩の防止
VM専用仮想メモリとの連携による VMマイグレーションの高速化
IaaS型クラウドにおける インスタンス構成の動的最適化手法
シャドウデバイスを用いた 帯域外リモート管理を継続可能なVMマイグレーション
実行時情報に基づく OSカーネルのコンフィグ最小化
仮想メモリを用いた VMマイグレーションの高速化
複数ホストに分割されたメモリを用いる仮想マシンの監視機構
ネストしたVMを用いた 仮想化システムの高速なソフトウェア若化
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
クラウドにおけるIntel SGXを用いた VMの安全な監視機構
非対称リンクにおける ジャンボフレームの性能評価
クラウドにおけるVMリダイレクト攻撃を防ぐためのリモート管理機構
クラウドにおけるVM内コンテナを用いた 自動障害復旧システムの開発
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
クラウドにおけるVM内コンテナを用いた 低コストで迅速な自動障害復旧
Intel SGXを利用する 巨大なアプリケーションの マイグレーション機構
Intel SGXを用いた仮想マシンの 安全な監視機構
軽量な仮想マシンを用いたIoT機器の安全な監視
複数ホストにまたがって動作する仮想マシンの障害対策
セキュリティ機構のオフロード時の 性能分離
VMMのソフトウェア若化を考慮した クラスタ性能の比較
信頼できないクラウドにおける仮想化システムの監視機構
VM内コンテナを用いた サービス単位の オートスケール機構
ウェブアプリケーションサーバの Degradation Schemeの 制御に向けて
仮想環境を用いた 侵入検知システムの安全な構成法
仮想マシンの監視を継続可能なマイグレーション機構
仮想マシンへの CPU 割り当ての変化に応じた最適な並列アプリケーション実行
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
仮想化システムのソフトウェア若化のための軽量なVMマイグレーション
全体ミーティング (5/23) 村田雅之.
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
VMリダイレクト攻撃を防ぐための 安全なリモート管理機構
ゼロコピー・マイグレーションを 用いた軽量なソフトウェア若化手法
仮想化システムの 軽量なソフトウェア若化のための ゼロコピー・マイグレーション
MPIを用いた並列処理計算 情報論理工学研究室 金久 英之
強制パススルー機構を用いた VMの安全な帯域外リモート管理
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
複数ホストにまたがるVMの 高速かつ柔軟な 部分マイグレーション
複数ホストにまたがるVMの メモリ使用状況に着目した高速化
MPIを用いた 並列処理 情報論理工学研究室 06‐1‐037‐0246 杉所 拓也.
強制パススルー機構を用いた VMの安全な帯域外リモート管理
Presentation transcript:

VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化 九州工業大学 髙山 都旬子 光来 健一

VM内での並列アプリケーションの実行 仮想マシン(VM)内で並列アプリケーションを動か すことも増えてきた アプリケーションスレッドは仮想CPUに割り当てられる 仮想CPUは物理CPU(CPUコア)に割り当てられる 仮想CPUアフィニティを設定すると割り当てを固定 アプリケーション VM スレッド vCPU vCPU vCPU vCPU 仮想CPU 物理CPU pCPU pCPU pCPU pCPU

VMマイグレーションの影響 VMは他のホストに移動されることがある マイグレーション先で物理CPUが不足する可能性 例:サーバのメンテナンス、負荷分散 マイグレーション先で物理CPUが不足する可能性 物理CPUより多くの仮想CPUを動作させるのが一般的 オーバサブスクリプション 並列アプリケーションはCPUを占有することが多い VM1 VM1 VM2 マイグレーション 仮想CPU 仮想CPU 物理CPU 物理CPU サーバ1 サーバ2

物理 CPU の不足時の対処 (1/3) VM1 VM1 VM2 複数のVM間で物理CPUを共有 1つの物理CPUを複数のVMの仮想CPUに割り当てる 仮想CPUが使える物理CPUの割合はVMの重みで決まる 例:50%と50%(デフォルト)、33%と67% 使い切らない場合は他の仮想CPUが使う VM1 VM1 VM2 仮想CPU vCPU vCPU vCPU vCPU vCPU vCPU 物理CPU pCPU pCPU pCPU pCPU

物理CPUの不足時の対処 (2/3) VM1 VM1 VM2 VMが利用できるCPU使用率を制限 CPU使用率の上限を設定することで物理CPUを分け合う デフォルト:割り当てられた物理CPU数×100%が上限 何個の物理CPUを何%ずつ使用するかは仮想CPUスケジューラに依存 VM1 VM1 VM2 仮想CPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU 物理CPU 50% 50% 40% 25% 40% pCPU pCPU pCPU pCPU 60% 75 % 60%

物理CPUの不足時の対処 (3/3) VM1 VM1 VM2 VMへの物理CPU割り当てを削減 1つの物理CPUをVMの複数の仮想CPUに割り当てる 仮想CPUアフィニティを利用 仮想CPU数より少ない数の物理CPUを占有 VM1 VM1 VM2 仮想CPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU vCPU 物理CPU pCPU pCPU pCPU pCPU pCPU pCPU pCPU pCPU

予備実験 並列アプリケーションの性能低下の調査 対象とした並列アプリケーション 実験環境 物理CPUの不足時の三つの対処について Tascell [Hiraichi et al.'09] で並列化したフィボナッチ数計算 NAS Parallel Benchmarks (BT) 実験環境 CPU: AMD Operation 6367 (16コア) × 2,メモリ: 320GB 物理CPUとして16コアのみを使用 仮想化ソフトウェア: Xen 4.4.0 VM: 仮想CPU 16個,メモリ 4GB,Linux 3.13.0

複数のVM間で物理CPUを共有した場合 VMの台数を1台から8台まで増加させた 台数を増やすほど理論値より遅くなった 理論値からの増加率 n台の時の理論値:1台の時の実行時間のn倍 理論値からの増加率 fib: 12% ~ 20%,BT: 104% ~ 191%

VMのCPU使用率を制限した場合 CPU使用率の上限を1600%から100%まで減少 CPU使用率を制限するほど理論値より遅くなった c%の時の理論値:制限なしの時の実行時間の1600/c倍 物理CPUを共有した場合より大幅に性能低下 理論値からの増加率 fib: 23% ~ 328%,BT: 157% ~ 5243% 最初が1600% 使用率を減らしていったときの実行時間

VMへの物理CPU割り当てを削減した場合 どの場合も理論値より少し遅くなった n個の時の理論値:16個の時の実行時間の16/n倍 物理CPUを減らすほど性能低下するというわけではなかった 理論値からの増加率 fib: 4% ~ 25%,BT: 16% ~ 78%

理論値より性能が低下する原因 (1/2) 仮想CPUスケジューリングのオーバヘッド ロックホルダ・プリエンプション [Uhlig et al.'04] の発生 ロックを保持している仮想CPUが他の仮想CPUに物理CPUを奪われ、ロックの解放が遅れる pCPU 0 vCPU 0 他のvCPU vCPU 0 pCPU 1 vCPU 1 vCPU 1 ロック解放待ち :ロックを保持して行う処理

理論値より性能が低下する原因 (2/2) vCPUスタッキング [Sukwong et al.'11] の発生 ロック待ちの仮想CPUがロックを保持している仮想CPUよりも先に物理CPUを割り当てられ、処理が進まない pCPU 0 vCPU 0 vCPU 1 vCPU 0 vCPU 1 ロック解放待ち :ロックを保持して行う処理

提案:pCPU-Est 物理CPUの不足時に並列アプリケーションの実行を 最適化 仮想CPUの切り替えを減らすための最適化を行う VM の仮想CPU 数の最適化 アプリケーションスレッド数の最適化 そのために、VMが実際に利用可能な物理CPU数を見積もる

VMの仮想 CPU 数の最適化 仮想CPUを減らすことでスケジューリングを回避 仮想化システムの管理者のみ変更可能 システム全体に影響が及ぶ可能性も アプリケーション VM vCPU vCPU vCPU vCPU pCPU pCPU pCPU pCPU

アプリケーションスレッド数の最適化 スレッドを減らすことで仮想CPUを間接的に減らす ユーザが容易に調整できる VMが利用可能な物理CPU数に応じて調整 ユーザが容易に調整できる 実行中に変更可能かどうかはアプリケーション依存 VM アプリケーション スレッド vCPU vCPU vCPU vCPU pCPU pCPU pCPU pCPU

利用可能な物理CPU数の見積もり 物理CPUと仮想CPUをグループに分ける VMが利用可能な物理CPU数を算出 1/2 1/3 vCPU vCPU vCPU vCPU vCPU pCPU pCPU

分割アルゴリズム システム内のすべての物理CPUと仮想CPUから なるグラフを考える 頂点:物理CPU、仮想CPU VM1 VM2 1 2 3 4 仮想CPU 物理CPU 1 2 3

グループの作成 つながっている仮想CPU数が最小の物理CPUを選択 その物理CPUとつながっている仮想CPUからなるグ ループを作成 1 2 3 4 仮想CPU 物理CPU 1 2 3

グループの拡張 (1/2) グループに追加する物理CPUを選択 その物理CPUとつながっている仮想CPUをグループ に追加 1 2 3 4 仮想CPU 物理CPU 1 2 3

グループの拡張 (2/2) 物理CPUの割合が大きくなるか変わらない場 合、拡張したグループを採用 グループの拡張を繰り返す 物理CPUの割合が小さくなる場合は採用しない 元のグループから外に出ている辺を削除 1/2 > 2/5 1 2 3 4 仮想CPU 物理CPU 1 2 3

グラフ分割 グラフの残りの部分に対して同様の作業を繰り返す 最終的にいくつかのグループに分割される グループの作成 グループの拡張 1/3 < 2/3 < 3/3 1 2 3 4 仮想CPU 1 物理CPU 2 3

グループのマージ 作成されたグループをできるだけマージする 削除した辺でつながれていた2つのグループを選択 局所的にグループを作るだけでは正しい分割ができない 削除した辺でつながれていた2つのグループを選択 辺の仮想CPU側をグループ1、物理CPU側をグループ2 グループ2の物理CPUの割合のほうが大きいか等しければマージ 1 2 3 4 仮想CPU 物理CPU 1 2 3 グループ1 グループ2

利用できる物理CPU数の例 8/5→2個 12/5→3個 2/2+1/3→2個 2/3→1個 VM1 VM2 VM1 VM2 1 2 3 4 1 2 3 4 1 1 2 3 4 1 2 3 1 1/2 1/3 4/5

実験 目的 対象とした並列アプリケーション 実験環境 最適なアプリケーションスレッド数・仮想CPU数を調査 pCPU-Estによる最適化の効果を確認 最適なスレッド数・仮想CPU数を用いた 対象とした並列アプリケーション 並列フィボナッチ数計算 (fib) NAS Parallel Benchmarks (BT) 実験環境 予備実験と同じ

最適なアプリケーションスレッド数 スレッド数を変えて実行し、最適なスレッド数を算出 物理CPUの共有時: 16/VMの台数 CPU使用率の制限時: CPU使用率に対応する物理CPU数 物理CPUの削減時:VMが利用可能な物理CPU数 いずれの場合もVMが利用可能な物理CPUの数が最適 BT

最適な仮想CPU数 VMの仮想CPU数を変えて実行し、最適な仮想 CPU数を算出 BTでは利用可能な物理CPU数が最適とは限らなかった

最適化の効果:物理CPUの共有時 どちらの最適化でも性能が改善された スレッド数の最適化のほうがよい場合があった 1.2〜3.2倍の高速化 特に理論値からの増加率が大きかったBTで改善 スレッド数の最適化のほうがよい場合があった VMが8台の時のfib (6%)、VMが2台の時のBT (69%)

最適化の効果: CPU使用率の制限時 物理CPUの共有時より性能改善が大きかった スレッド数の最適化のほうが大幅によい場合が あった 1.2〜55倍の高速化 スレッド数の最適化のほうが大幅によい場合が あった 1200〜600%の時のBT (〜113%) CPU使用率を減らしたときの最適化の効果

最適化の効果:物理CPUの削減時 他の対処の場合と似た傾向が見られた 1.1〜2.0倍の高速化 スレッド数の最適化のほうが最大60%性能がよい 仮想CPU数を利用可能な物理CPU数と同数にする と性能が悪化する場合があった

関連研究 VCPU-Bal [Song et al.'13], FlexCore [Miao et al.'15] VMの仮想CPU数を最適化することで性能を向上 仮想CPUアフィニティは考慮しない vScale [Cheng et al.'16] VMが使い切らなかった物理CPUを考慮してVMの仮想CPU数を最適化 複数のVMが物理CPUを共有する場合のみを想定 コスケージュリング [VMware'08] VMのすべての仮想CPUを同時にスケジューリング 必要な数の物理CPUがそろうまで待つ必要がある

まとめ 物理CPUの不足時の対処を行った際の並列アプリ ケーションの性能への影響を調査 並列アプリケーションを最適に実行するpCPU-Estを 提案 VMが利用可能な物理CPU数を見積もる アプリケーションスレッド数・仮想CPU数を最適化 スレッド数の最適化がより効果的

今後の課題 pCPU-Estが見積もった物理CPU数でどこまで最適な 実行が可能かを調査 Linuxのcgroupsを用いた最適化手法を検討 非対称なVMに対する仮想CPU数の最適化 VMの仮想CPU数を減らした時に利用できる物理CPU数も減る場合がある 利用できる物理CPU数は変わらないようにしたい