複数ホストにまたがるVMの 高速かつ柔軟な 部分マイグレーション 九州工業大学 大学院情報工学府 情報創成工学専攻 光来研究室 M2 柏木崇広
大容量メモリを持つVM IaaS型クラウドが普及 大容量メモリを持つVMも提供 仮想マシン(VM)を提供 Amazon EC2: 12TBのHigh Memoryインスタンス 2019年には24TBのインスタンスを提供予定 インメモリデータベースやビッグデータ解析に利用 0:50 仮想マシン VMコア メモリ 12TB
VMマイグレーション 稼働しているVMを別のホストに移動 移送先のホストに十分な空きメモリが必要 サービスを停止させずにホストのメンテナンスが可能 移送先のホストに十分な空きメモリが必要 十分な空きメモリを持つホストを常に確保しておくことは 避けたい コストの上昇による利用料金の上昇 運用の自由度の低下 1:40 移送元ホスト 移送先ホスト マイグレーション メモリ 12TB 空きメモリ 6TB VMコア
分割マイグレーション [Suetake+ APSys’16] [Suetake+ CLOUD’18] VMを分割して複数のホストにマイグレーション VMコアとアクセスされそうなメモリ:メインホストに転送 それ以外のメモリ:サブホスト群に転送 分割メモリVM:マイグレーション後にリモートペー ジングを行いながら動作するVM 必要なメモリをサブホストからページイン 不要そうなメモリをページアウト 分割メモリVM アクセス 今後アクセスされないことが予想されるメモリ 2:30 移送先メインホスト 移送元ホスト マイグレーション メモリ 12TB メモリ 6TB VMコア メモリ 6TB 移送先サブホスト
分割メモリVMの マイグレーションにおける問題 マイグレーション性能が大幅に低下 従来のマイグレーションではリモートページングが頻発 実験では、通常VMのマイグレーションの6倍の時間 常にVM全体をマイグレーションする必要 一部のホストのメンテナンス時でも他のホスト上のVMの メモリも転送 従来で何故、メインホスト経由なのか説明する。 3:20 移送元メインホスト 移送先ホスト マイグレーション VM コア メモリ メモリ メモリ メモリ 移送元サブホスト
提案:部分マイグレーション 分割メモリVMに対して柔軟かつ高速なマイグレー ションを可能にする 移送元の各ホストが独立して移送先ホストに直接転送 転送時にリモートページングが不要 4:10 移送元メインホスト マイグレーション VM コア メモリ メモリ 移送先ホスト(群) 移送元サブホスト
部分マイグレーションの例 置換マイグレーション 統合マイグレーション 対象ホスト上のVMの一部だけを別のホストに移動 一部のホストだけのメンテナンス時にマイグレーションを 高速に完了可能 統合マイグレーション 複数のホスト上のVMを一つのホストに統合 新メインホスト メモリ VM コア メインホスト メモリ VM コア
部分マイグレーションの例 置換マイグレーション 統合マイグレーション 対象ホスト上のVMの一部だけを別のホストに移動 一部のホストだけのメンテナンス時にマイグレーションを 高速に完了可能 統合マイグレーション 複数のホスト上のVMを一つのホストに統合 メインホスト サブホスト メモリ VM コア 新ホスト メモリ VM コア
置換マイグレーション (メインホスト) 移送元メインホスト:VMコアとメモリを転送 移送先メインホスト:元のサブホストに接続 サブホストに存在するメモリは転送しない サブホストにあるメモリについてはその情報のみを送信 移送先メインホスト:元のサブホストに接続 マイグレーション後にリモートページングを行うため 移送元メインホスト Userfaultfddを書かない 移送先ホスト:サブホストと接続 userfaultfd機構の説明:qemuでページングを扱うための機構 6:40 マイグレーション 移送先メインホスト VM コア メモリ メモリ 接続 サブホスト
置換マイグレーション (サブホスト) 10 移送元サブホスト:VMのメモリを転送 メインホスト:移送先サブホストと接続 メインホストからサブホストへメモリの転送を指示 メインホストからは何も転送しない メインホスト:移送先サブホストと接続 マイグレーション後にリモートページングを行うため メインホスト 9:10 接続 VM 本体 メモリ メモリ マイグレーション 移送先サブホスト メモリ 移送元サブホスト 10
置換マイグレーション中の リモートページング(1/2) マイグレーション中にリモートページングが発生し た場合でもメモリの整合性を保つ メインホストかサブホストに必ず存在 どちらか一方のホストにだけ存在 ページインされたメモリ 移送先メインホストに存在しなければ再送機構で転送 再送機構を用いて説明 7:30 移送元メインホスト 移送先メインホスト VM コア マイグレーション VM コア ページイン 11 移送元サブホスト
置換マイグレーション中の リモートページング(2/2) ページアウトされたメモリ メインホストから転送済みの場合、サブホストと移送先メ インホストの両方に同じメモリが存在 OSの機能を拡張して移送先メインホストに転送済みのメ モリを無効化 サブホストにだけ存在するようにする Userfaultfd 機構 -> OSの〜 8:20 移送元メインホスト 移送先メインホスト VMコア マイグレーション VM コア ページアウト 12 移送元サブホスト
統合マイグレーション メインホストとサブホストの置換マイグレーションを 同一の移送先ホストに対して実行 複数NICを用いてメモリを並列に転送することで高速化 NICごとにルーティングテーブルを作成 両方の置換マイグレーションが完了すると、一つのホス トでVMが動作 ボンディングの説明も行う 10:50 移送元メインホスト 移送先ホスト VM コア メモリ NIC メモリ 移送元サブホスト
統合マイグレーション中の リモートページング リモートページングへの対処は置換マイグレーショ ン単独の場合とは一部異なる ページイン・ページアウトされたメモリは未転送ならば移 送先ホストに転送(単独の場合と同様) 移送先ホストに転送済みのメモリの無効化は行わない 最終的にすべてのメモリが移送先ホストに送られるため 11:40 移送元メインホスト 移送先ホスト VM コア マイグレーション VM コア ページイン ページアウト 移送元サブホスト
実験 分割メモリVMに対する置換マイグレーションと統 合マイグレーションの性能を測定 実験環境 移送先メインホスト CPU:Xeon E3-1270 v3 メモリ:32GB OS:Linux 4.3 仮想化SW:QEMU-KVM 2.4.1 12:30 10GbE CPU:Intel Core i7-8700 メモリ:64GB OS:Linux 4.15 CPU:Xeon E3-1270 v3 メモリ:32GB OS:Linux 4.3 仮想化SW:QEMU-KVM 2.4.1 CPU:Intel Core i7-8700 メモリ:64GB OS:Linux 4.15 移送元ホスト 移送先サブホスト1・2
様々な部分マイグレーションの性能 マイグレーション時間 ダウンタイム 部分マイグレーションでは従来の1/3に短縮 VMのメモリ量に比例 置換/統合マイグレーションでは減少 VM停止後に転送されるデータ量が少なかったため 凡例を分ける メモリの図を追加 ダウンタイムを説明 KVMの見積もり 早くなったのが良いことではない 13:20
高負荷VMの マイグレーション性能 メモリの書き換えを繰り返すVMのマイグレーション 性能を測定 メモリの再送によりマイグレーション時間が増加 サブホストの置換マイグレーションは低負荷時と同程度 部分マイグレーションのほうが従来よりまだ高速 ダウンタイムは従来と同程度
マイグレーション後のVMの性能 マイグレーション前後でインメモリ・データベースの 性能を測定 分割マイグレーション後はリモートページングが頻発して 性能が大幅に低下 統合マイグレーション後はVMの分割前と同等の性能 12GBは入りきらない量 14:10
関連研究 MemX [Deshpande+ ICPP’10] サブホストの置換マイグレーションをサポート マイグレーション中のリモートページングは考慮しない Scatter-Gather Migration [Deshpande+ CLOUD'14] 後半部分が統合マイグレーションに似ている マイグレーション中のページングは単純に対処可能 Jettison [Bila+ EuroSys'12] デスクトップVMの一部だけをサーバにマイグレーション したり戻したりできる 部分マイグレーションの1つの形態 必要に応じて飛ばす
まとめ 分割メモリVMに対して柔軟かつ高速な部分マイグ レーションを可能にするIPmigrateを提案 今後の課題 置換マイグレーション 統合マイグレーション 分割メモリVMの一部をホスト単位で一つのホストに集約 今後の課題 ビッグデータ処理を模した様々なベンチマークの実行 より柔軟な部分マイグレーションの実現 実現 15:00