IPmigrate:複数ホストに分割されたVMの マイグレーション手法 九州工業大学 柏木崇広 末竹将人 光来健一
大容量メモリを持つVM IaaS型クラウドが普及 大容量メモリを持つVMも提供 仮想マシン(VM)を提供 システムを自由にカスタマイズ可能 Amazon EC2: 2TBのVM(4TB〜16TBのVMも予定) ビッグデータの解析などに利用 仮想マシン VM本体 メモリ 2TB
VMマイグレーション 稼働しているVMを別のホストに移動 移送先のホストに十分な空きメモリが必要 サービスを停止させずにホストのメンテナンスが可能 移送先のホストに十分な空きメモリが必要 十分な空きメモリを持つホストを常に確保しておくことは 困難 コストの上昇 移送元ホスト 移送先ホスト マイグレーション VM本体 メモリ メモリ
分割マイグレーション [Suetake et al.’16] VMを分割して複数のホストにマイグレーション ページの参照履歴に基づいてメモリ転送 VM本体と使用頻度の高いメモリをメインホストに転送 マイグレーション後はリモートページングを行う VMが必要としたメモリをサブホストからページイン アクセスしていないメモリをサブホストにページアウト 移送先メインホスト 移送元ホスト メモリ 2TB メモリ 1TB マイグレーション VM本体 ページイン ページアウト メモリ 1TB 移送先サブホスト
分割マイグレーションの問題(1/2) リモートページングによりVMの性能が低下 ソートで16%の性能低下 [末竹ら'17] アプリケーションによってはさらに性能が低下する可能性 空きホストが見つかれば再び1台で動作させるべき メインホスト VM本体 メモリ ページング メモリ サブホスト
分割マイグレーションの問題(2/2) 一部のホストのメンテナンス時でもVM全体を停止 させる必要がある メインホスト VM本体 メモリ 停止 メモリ サブホスト
提案: IPmigrate (1/2) 統合マイグレーション 複数ホストにまたがって動作するVMを一つのホストへ 並列に転送 リモートページングによる性能低下を解消 マイグレーション中にページングが発生しても過不足なく メモリページを転送 移送先ホスト 移送元メインホスト VM本体 メモリ メモリ マイグレーション メモリ転送 メモリ メモリ 移送元サブホスト
提案: IPmigrate (2/2) 部分マイグレーション 指定したホスト上にあるVMの一部だけを別のホストに 移動 ページングが発生しても各メモリページは一つのホスト にだけ存在することを保証 移送元メインホスト 移送先メインホスト マイグレーション VM本体 メモリ メモリ 接続 メモリ 移送元サブホスト
分割マイグレーション後の システム構成 分割マイグレーション後は各ホストでメモリを管理 リモートページング時にページの情報を更新 移送先メインホスト 各ページがあるホストを位置データベース(DB)に記録 移送先サブホスト サブホストにあるページをページ配列で管理 リモートページング時にページの情報を更新 移送先メインホスト 移送元ホスト VM 本体 メモリ メモリ 位置 DB マイグレーション VM本体 メモリ メモリ メモリ メモリ ページ配列 移送先サブホスト
統合マイグレーションの流れ 移送元のメインホストとサブホストからVMを転送 メインホスト:VM本体とメモリの一部を転送 位置DBに基づいてメインホストにあるページのみ サブホストへメモリの転送を指示 サブホスト:VMのメモリの一部を転送 ページ配列に基づいてサブホストにあるページのみ 移送元メインホスト 移送先ホスト VM 本体 メモリ メモリ 位置 DB マイグレーション メモリ メモリ ページ配列 移送元サブホスト
メモリの並列転送 移送元サブホスト 移送先ホスト メインホストからの指示でメモリ送信スレッドを作成 メモリ転送とリモートページングを並列に処理 移送先ホスト サブホストからの接続でメモリ受信スレッドを作成 メインホストからの接続は既存のスレッドで処理 移送先ホスト 移送元 メインホスト 既存スレッド 既存スレッド メモリ転送 サブホスト1 送信スレッド1 受信スレッド1 サブホスト2 送信スレッド2 受信スレッド2
メモリ転送の同期 移送先ホストでメモリ転送の同期をとる メインホストのメモリ転送が先に完了するとダウン タイムが増加 サブホストのメモリ転送が完了してからVMを再開 サブホストのメモリがないとVMが正常動作できないため メインホストのメモリ転送が先に完了するとダウン タイムが増加 移送元でメモリ転送の同期をとる必要(未実装) 移送先ホスト 移送元メインホスト マイグレーション VM本体 メモリ メモリ メモリ転送 メモリ 移送元サブホスト
統合マイグレーション中の ページイン メモリの転送情報に基づいて過不足なく転送 各ホストでビットマップを用いて転送情報を管理 転送済みページは1、未転送ページは0 ページイン時にサブホストの転送情報も受信 未転送ならメインホストから移送先ホストへ転送 既存の再送機構を利用 移送元メインホスト 移送先ホスト VM 本体 マイグレーション VM 本体 ページイン 移送元サブホスト
統合マイグレーション中の ページアウト メモリの転送情報と更新情報に基づいて転送 ページアウト時にメインホストの転送情報も送信 ページが更新されていれば未転送状態に変更 未転送ならサブホストから移送先ホストへ転送 メモリ送信スレッドが再送(未実装) 移送元メインホスト 移送先ホスト VM本体 マイグレーション VM 本体 ページアウト 移送元サブホスト
部分マイグレーションの流れ メインホスト間でのマイグレーションに対応 メインホストからVM本体とそのメモリの一部を転送 サブホストにあるメモリについてはその情報のみを送信 サブホストからはメモリを転送しない 移送先メインホストは移送元サブホストに接続 リモートページングを行うため 移送元メインホスト 移送先メインホスト VM 本体 メモリ メモリ 位置 DB マイグレーション メモリ 接続 移送元サブホスト
部分マイグレーション中の ページング サブホストと移送先メインホスト間で整合性を保つ 移送元メインホストは転送情報と無効化情報を管理 メインホストにページインされたページ 未転送なら移送先ホストに転送 サブホストにページアウトされたページ 転送済みなら移送先ホストのページを無効化(未実装) 移送元メインホスト 移送先メインホスト 無効化 VM本体 マイグレーション VM本体 ページイン ページアウト 移送元サブホスト
実験 統合マイグレーションと部分マイグレーションの性 能とマイグレーション後の性能を測定 実験環境 従来のマイグレーション、分割マイグレーションと比較 実験環境 VMのメモリは半分ずつに分割 移送元 ホスト 移送先 メインホスト サブホスト CPU Xeon E3-1270 v3 Xeon E3-1270 v2 メモリ 16GB 12GB NIC 10GbE OS Linux 4.3 仮想化ソフトウェア QEMU-KVM 2.4.1 -
統合マイグレーションの性能 2台のホストから統合マイグレーションを実行 マイグレーション時間は従来とほぼ同じ ダウンタイムは減少 メモリの並列転送による高速化は見られなかった ダウンタイムは減少 VMの停止中に転送するページ数が減少
並列転送における高速化 移送先ホストでのネットワーク・ボトルネックを解消 並列転送による高速化を確認 移送先ホストで2つのGbE NICをボンディング 移送元ではそれぞれ1つのGbE NICを使用 並列転送による高速化を確認 マイグレーション時間が46%減少 移送元メインホスト 移送先ホスト VM 2GB 移送元サブホスト
部分マイグレーションの性能 メインホスト間での部分マイグレーションを実行 マイグレーション時間は38〜47%減少 ダウンタイムも減少 転送するメモリ量に比例 ダウンタイムも減少 統合マイグレーションと同様の理由
統合マイグレーション後の性能 マイグレーション後のVMの性能をmemcachedを 用いて測定 分割マイグレーション後は11%の性能低下 リモートページングが原因 統合マイグレーション後はほぼ性能低下なし VM 12GB
部分マイグレーション後の性能 部分マイグレーション後は11%の性能低下 分割マイグレーション後と同等の性能 リモートページングが原因
関連研究 MemX [Deshpande et al.’10] メインホスト間およびサブホスト間の部分マイグレーショ ンをサポート マイグレーション中のリモートページングは考慮しない Scatter-Gather Migration [Deshpande et al. ‘14] 後半部分が統合マイグレーションに似ている マイグレーション中のページングは単純に対処可能 Jettison [Bila et al. '12] デスクトップVMの一部だけをサーバにマイグレーション サーバからデスクトップに再マイグレーション
まとめ 複数ホストにまたがって動作するVMのマイグレー ションを可能にするシステムIPmigrateを提案 今後の課題 統合マイグレーションと部分マイグレーション マイグレーション中のページングに対応 統合マイグレーション後の性能向上を確認 今後の課題 実装できていない機能の実装 マイグレーション中のページアウトに対応 移送元でのメモリ転送の同期 より柔軟な部分マイグレーションのサポート 実現