複数ホストにまたがるVMの メモリ使用状況に着目した高速化

Slides:



Advertisements
Similar presentations
九州工業大学 塩田裕司 光来健一.  仮想マシンは必要なときだけ動かす使い方が一般 的 ◦ 一台の計算機上に複数の計算機を仮想的に作成できる ◦ デスクトップ  異なる OS を使用するため作成 ◦ サーバ  最大負荷に合わせた数の仮想マシンを作成  長期間使わない仮想マシンも存在する VM.
Advertisements

九州工業大学大学院 情報工学府 情報創成工学専攻 塩田裕司.  仮想マシン( VM )は必要なときだけ動かすこと が多い ◦ クラウドでもデスクトップでも ◦ 長期間使わない VM が存在する  VM の再開時に攻撃を受ける可能性が高くなる ◦ 停止中に OS やアプリケーションの脆弱性が発見されるこ.
ファイルキャッシュを考慮したディスク監視のオフロード
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
クラウド上の仮想マシンの安全なリモート監視機構
クラウドにおける ネストした仮想化を用いた 安全な帯域外リモート管理
Xenを用いたクラウドコンピュー ティングにおける情報漏洩の防止
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
中村孝介(九州工業大学) 光来健一(九州工業大学/JST CREST)
KVMにおけるIDSオフロードのための仮想マシン監視機構
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
クラウドにおけるライブラリOSを用いた インスタンス構成の動的最適化
記 憶 管 理(2) オペレーティングシステム 第10回.
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
OSが乗っ取られた場合にも機能するファイルアクセス制御システム
侵入検知システム(IDS) 停止 IDS サーバへの不正アクセスが増加している
クラウドにおけるアプリケーション単位での VM構成の動的最適化
帯域外リモート管理を継続可能な マイグレーション手法
大きな仮想マシンの 複数ホストへのマイグレーション
ファイルシステムキャッシュを 考慮したIDSオフロード
ネストした仮想化を用いた VMの安全な帯域外リモート管理
帯域外リモート管理の継続を 実現可能なVMマイグレーション手法
VMマイグレーションを可能にするIDSオフロード機構
クラウドの内部攻撃者に対する安全なリモートVM監視機構
アスペクト指向プログラミングを用いたIDSオフロード
サスペンドした仮想マシンの オフラインアップデート
KVMにおける仮想マシンの 内部監視機構の実装と性能評価
VMのメモリ暗号化によるクラウド管理者への情報漏洩の防止
VMのメモリ暗号化による クラウド管理者への情報漏洩の防止
VM専用仮想メモリとの連携による VMマイグレーションの高速化
IaaS型クラウドにおける インスタンス構成の動的最適化手法
リモートホストの異常を検知するための GPUとの直接通信機構
シャドウデバイスを用いた 帯域外リモート管理を継続可能なVMマイグレーション
実行時情報に基づく OSカーネルのコンフィグ最小化
仮想メモリを用いた VMマイグレーションの高速化
複数ホストに分割されたメモリを用いる仮想マシンの監視機構
ネストしたVMを用いた 仮想化システムの高速なソフトウェア若化
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
オペレーティングシステムJ/K (仮想記憶管理)
クラウドにおけるIntel SGXを用いた VMの安全な監視機構
IaaS環境におけるVMのメモリ暗号化による情報漏洩の防止
クラウドにおけるVMリダイレクト攻撃を防ぐためのリモート管理機構
クラウドにおけるVM内コンテナを用いた 自動障害復旧システムの開発
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
クラウドにおけるVM内コンテナを用いた 低コストで迅速な自動障害復旧
Intel SGXを利用する 巨大なアプリケーションの マイグレーション機構
Intel SGXを用いた仮想マシンの 安全な監視機構
軽量な仮想マシンを用いたIoT機器の安全な監視
複数ホストにまたがって動作する仮想マシンの障害対策
VMMのソフトウェア若化を考慮した クラスタ性能の比較
信頼できないクラウドにおける仮想化システムの監視機構
VM内コンテナを用いた サービス単位の オートスケール機構
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
仮想環境を用いた 侵入検知システムの安全な構成法
Cell/B.E.のSPE Isolationモードを用いた監視システム
仮想マシンの監視を継続可能なマイグレーション機構
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
仮想マシンと物理マシンを一元管理するための仮想AMT
仮想化システムのソフトウェア若化のための軽量なVMマイグレーション
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
Cell/B.E. のSPE上で動作する 安全なOS監視システム
VMリダイレクト攻撃を防ぐための 安全なリモート管理機構
ゼロコピー・マイグレーションを 用いた軽量なソフトウェア若化手法
仮想化システムの 軽量なソフトウェア若化のための ゼロコピー・マイグレーション
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
強制パススルー機構を用いた VMの安全な帯域外リモート管理
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
複数ホストにまたがるVMの 高速かつ柔軟な 部分マイグレーション
強制パススルー機構を用いた VMの安全な帯域外リモート管理
管理VMへの キーボード入力情報漏洩の防止
Presentation transcript:

複数ホストにまたがるVMの メモリ使用状況に着目した高速化 九州工業大学 田内聡一朗 光来健一

大容量メモリを持つVM IaaS型クラウドが普及 大容量メモリを持つVMも提供 仮想マシン(VM)をインターネット経由でサービスとして 提供 ユーザは必要な時に必要なだけ利用可能 大容量メモリを持つVMも提供 例:Amazon EC2は12TBのメモリを持つVMを提供 ビッグデータの解析などに利用 まずは研究背景から説明していきます。 ユーザは必要な時に必要なリソースを選択して利用することが可能 VM 4TB 12TB インターネット経由

VMマイグレーション VMを稼働させたまま別のホストへ移動 移送先ホストに十分な空きメモリが必要 サービスを停止することなくホストをメンテナンス可能 移送先ホストに十分な空きメモリが必要 大容量メモリをもつVMの場合、そのようなホストを常に 確保しておくのは避けたい コストが増加し、運用の自由度が低下 VM 移送元ホスト 移送先ホスト マイグレーション VM1 VM2 空きメモリ VMの運用にはVMマイグレーションという技術が利用されています メンテンなんすや障害対策として VMのサイズ分の

分割マイグレーション [Suetake et al.'18] VMを分割して複数のホストへマイグレーション 今後アクセスが予測されるメモリをメインホストへ転送 LRUに基づいて決定 メインホストに入りきらないメモリはサブホストへ転送 VMコアをメインホストへ転送 仮想CPUや仮想デバイスの状態 移送元ホスト 移送先メインホスト 移送先サブホスト VMコア VMコア VMのメモリ VMのメモリ VMのメモリ 1 2 3 4 ・・・ ・・・ ・・・ アクセスされそうなメモリ それ以外のメモリ

リモートページング 移送先では複数のホストにまたがってVMが動作 リモートページングによりVMの性能が低下 メインホスト上でリモートページングを行う 必要とするサブホスト上のメモリをページイン アクセスされそうにないメモリをサブホストにページアウト リモートページングによりVMの性能が低下 ページインが完了するまで仮想CPUが停止 ページアウトがVMやネットワークの性能に影響 ページインとページアウトが対となっている ページアウトは仮想CPUを停止する必要はないが,〜 メインホスト サブホスト ページイン メモリ メモリ 1 2 3 4 ・・・ ・・・ ページアウト

未使用メモリの存在 VMのメモリの中には使われていない領域が存在 することも多い OSの起動直後には200MB程度しか使われていない 巨大なアプリケーションの終了後には大量のメモリが 解放される 「分割マイグレーションとリモートページングの性能を向上させるために、本研究では未使用メモリに着目した。VMのメモリの中には使われていない領域が存在することも多い。例えば、...。従来システムはこのような未使用メモリを考慮していない。」と説明。 OSの起動中 これらが先ほど説明したオーバヘッドの原因の一つである

不要なメモリ転送 従来のリモートページングは未使用メモリについ ても不要なメモリ転送を行う VMが未使用メモリにアクセスした場合 サブホストからそのメモリを転送してページイン 別の未使用メモリがあればアクセスされそうにないメモ リとして選択 そのメモリをページアウトしてサブホストに転送 赤 黄色のメモリ説明 メインホスト サブホスト VMのメモリ 1 3 2 4 ・・・ ・・・

提案:FCtrans VMの未使用メモリに着目することで複数ホストに またがるVMの高速化を実現 VMの未使用メモリを追跡し続ける 分割マイグレーション時に未使用メモリは転送しない リモートページング時に未使用メモリに対してネット ワーク転送を行わない 移送元ホスト 移送先メインホスト 移送先サブホスト マイグレーション VMのメモリ VMのメモリ VMのメモリ 1 2 3 4 2 4 ・・・ ・・・ ・・・ リモートページング

VMの未使用メモリの追跡 VMの起動時から未使用メモリを追跡 分割マイグレーション後にはメインホストにおいて VMのメモリ使用状況を管理 起動時はすべてのページが未使用 データが書き込まれると使用中になる 分割マイグレーション後にはメインホストにおいて     VMのメモリ使用状況を管理 サブホストについてもメインホストで管理 移送元ホスト 移送先メインホスト 移送先サブホスト マイグレーション メモリ使用状況 メモリ使用状況 VMのメモリ 4 3 VMのメモリ VMのメモリ ・・・ 1 2 3 3 4 1 2 ・・・ ・・・ 9

リモートページングの最適化 リモートページングの際に未使用メモリに対して不 要なネットワーク転送を行わない 未使用メモリをサブホストからページインする場合には データ転送を行わない 代わりに、メインホストの空きメモリをVMに割り当てる VMを即座に再開可能 未使用メモリをページアウトする場合にもデータ転送を 行わない ページイン・ページアウトは行うが,データ転送のみ省略したという説明にする メインホスト サブホスト ページイン メモリ メモリ 1 2 4 3 2 4 ・・・ ・・・ ページアウト 10

分割マイグレーションの最適化 未使用メモリのデータは移送先ホストに転送しない ネットワーク転送量が削減される マイグレーションも高速化 使用中の多くのページがメインホストに転送される アクセス履歴に基づいてアクセスされそうなメモリがメインホス トへ 未使用メモリはまったくアクセスされていない マイグレーション後のリモートページングを削減 移送元ホスト VMのOSの情報などの核となる情報は従来通り転送を行う VMのメモリデータの転送に変更を加えた 移送先メインホスト 移送先サブホスト マイグレーション VMのメモリ VMのメモリ 2 4 VMのメモリ ・・・ 1 2 3 4 ・・・ ・・・

OSが解放したメモリの考慮 VM内のOSがメモリを解放して使わなくなっても、 VMのメモリは使用中のまま 一旦、使用中になると未使用状態には戻らない VM内のOSが使わなくなったメモリもVMの未使用 メモリとして扱う OSのメモリ使用状況を監視し、使われていないメモリ があれば未使用状態に戻す 物理メモリ割り当てを解除 という言葉を使いましょう VM内のOS のメモリ 使用中 未使用 未使用 使用中 未使用 VMのメモリ 使用中 未使用 使用中 未使用 使用中 未使用

実装 FCtransをQEMU-KVM 2.11.2に実装 S-memV [Suetake et al.'18]の分割マイグレーションと リモートページングを移植 userfaultfd機構を拡張したLinux 4.3.0 移送元メインホスト 移送先メインホスト 移送先サブホスト VM VM VMのメモリ マイグレーション VMのメモリ 1/2 VMのメモリ 2/2 QEMU-KVM Linux(userfaultfd) メモリサーバ QEMU-KVM Linux(userfaultfd)

使用ビットマップ 4KBのページ単位でVMのメモリ使用状況を管理 未使用:0、使用中:1 Linuxのuserfaultfd機構を用いて未使用メモリへ のアクセスを検出 最初のアクセスでページフォールトを発生させる VMにチャンク単位で物理メモリを割り当てる 使用ビットマップの対応するビットを1にする 未使用メモリの追跡には使用ビットマップを用います. 使用中 未使用 未使用 使用中 未使用 VMメモリ使用状況: ・・・ 1 1 使用ビットマップ: ・・・

分割マイグレーションの拡張 使用ビットマップを調べ、ページが未使用なら移送 先ホストに転送しない ページが使用中なら、従来通りにデータ転送を行う 移送先メインホストではuserfaultfd機構を用いてVMの メモリにデータを書き込む 移送先メインホストでは使用ビットマップを再構築 メモリの情報を受信したら対応するビットを1にする 移送元ホスト VMのOSの情報などの核となる情報は従来通り転送を行う VMのメモリデータの転送に変更を加えた 使用状況が違う 図がおかしい 使用状況の図 移送先メインホスト 移送先サブホスト ビットマップ ビットマップ 1 マイグレーション 1 ・・・ 1 VMのメモリ ・・・ VMのメモリ VMのメモリ ・・・ 1 2 3 4 ・・・ ・・・

ページインの最適化 メインホストでのページフォールト発生時に使用 ビットマップを調べる ページが使用中の場合、従来通りにサブホストからの ページインを行う ページが未使用の場合、ページイン時にサブホストか らのデータ転送を行わない userfaultfd機構を用いてメインホストの空きメモリをチャンク単 位でVMに割り当てる メインホストの空きメモリ容量を管理してページアウトが必要かどうか判定 未使用ページのページインの際に発生するページフォールトは,要求ページは物理メモリに割り当てられていないのでページインは行われない 転送を省略した アクセス要求 メインホスト サブホスト メモリ メモリ 1 4 3 ・・・ ・・・ 16

ページアウトの最適化 メインホストにおいて利用可能な空きメモリ量を管 理 メインホストにまだ空きメモリがあればページアウ トを行わない 従来と異なり、使用メモリ量が一定に保たれないため メインホストにまだ空きメモリがあればページアウ トを行わない 空きメモリがなくなれば、従来通りにサブホストへの ページアウトを行う リモートページグの説明でページアウトインは一連の メインホスト サブホスト メモリ メモリ 1 2 4 3 ・・・ ・・・ ページアウト

VMとOSのメモリ管理情報の統合 定期的にVM内のOSが管理しているページ情報 を取得 拡張したuserfaultfd機構を用いてVMに割り当てられた 物理メモリを解放 整合性を保つため、処理中はVMの仮想CPUを一時停 止 物理メモリ割り当てを解除 という言葉を使いましょう VM内のOS のメモリ 使用中 未使用 未使用 使用中 未使用 ・・・ 書き換え 1 1 1 使用ビットマップ: ・・・

透過的なOSデータの取得 LLView [尾崎ら'18]を用いてOSのページの参照カ ウンタをVMの外から透過的に取得 LLView:VMイントロスペクションを用いてVM内のOS データを容易に取得するためのフレームワーク Linuxのヘッダファイルを用いてプログラムを記述 ページ構造体にアクセス コンパイルして生成されたビットコードを変換 load命令でVM内のメモリにアクセスさせる for (pfn = 0; pfn < max_pfn; pfn++) { page = pfn_to_page(pfn); count = atomic_read(&page->_refcount); }

実験 FCtransによる性能向上とオーバヘッドを調べた 比較対象 リモートページング性能 マイグレーション性能 従来の分割マイグレーションおよびリモートページング を行うシステム ホスト(2台) CPU: Intel Core i7-7700    : Intel Xeon CPU E3-1225 v5 メモリ: 8GB ネットワーク: ギガビットイーサネット OS: Linux 4.3 仮想化ソフトウェア: QEMU-KVM 2.11.2 VM 仮想CPU: 1 メモリ: 1GB OS: Linux 4.4

リモートページング性能 分割マイグレーション後のページイン回数を測定 FCtransでは合計ページイン回数を大幅に削減 分割マイグレーション直後 メモリを書き換えるプログラムを動かした場合 FCtransでは合計ページイン回数を大幅に削減 それぞれ従来システムと比較して99%と80%減少 マイグレーション直後はページイン 通常時は差分 負荷はページインは起こらないはず 起動後はページングの回数がおおい

マイグレーション性能 分割マイグレーションにかかる時間を測定 VMが一時停止する時間(ダウンタイム)を測定 FCtransにより71%高速化 ネットワーク転送量が71%削減されたため VMが一時停止する時間(ダウンタイム)を測定 FCtransにより37%高速化 停止中に転送されるメモリに未使用メモリが含まれた ため メモリの分割時に未使用メモリを優先してサブホストへ送るように実装 リモートページング優先なら サブホストに転送することで転送の並列優先

未使用状態に戻されたメモリ量 VM内のOSによって解放された後、FCtransに よって未使用状態に戻されたメモリ量を測定 185MBのメモリを未使用状態に戻すことができた

メモリ追跡のオーバヘッド 未使用メモリの追跡がVM内のOSの起動時間に 与える影響を調べた systemd-analyzeコマンドを用いて測定 FCtransではOSの起動時間が13%長くなった userfaultfd機構を用いてページフォールトの処理を行う オーバヘッド

関連研究 VSwapper [Amit et al.'14] 未使用メモリを転送しないマイグレーション VMのメモリとディスク間でのページングを最適化 いくつかの最適化はリモートページングにも適用可能 未使用メモリを転送しないマイグレーション VM内のOSを拡張して未使用メモリの情報を取得 [Ma et al.'12] [Koto et al.'12] VM起動時からログダーティ機構を用いて追跡 [Li et al.'15] VMイントロスペクションに基づくマイグレーション [Chiang et al.'13] VMの外から未使用メモリを特定して転送しないようにする FCtransではOSレベルとVMレベルの管理を統合 同じホストに送る場合でないと転送を省略できないということ 書き込みを検知すること まとめて OSの情報を取得することでオーバヘッドの削減可能 探索を分割して行う

まとめ 未使用メモリに着目して複数ホストにまたがるVM の高速化を実現するFCtransを提案 今後の課題 VMの未使用メモリを追跡 リモートページングと分割マイグレーションの際に未使 用メモリのデータを転送しないようにする リモートページング性能とマイグレーション性能の大幅 な向上を確認 今後の課題 VMへの影響を抑えたOSのメモリ管理情報の取得 実アプリケーションを用いた性能評価 様々な部分マイグレーション[柏木ら'18]への適用 VMのメモリの大きさに比例して探索時間は長くなる