VM専用仮想メモリとの連携による VMマイグレーションの高速化 九州工業大学 村岡裕二 柏木崇広 光来健一
大容量メモリを持つVM クラウドでは大容量メモリを持つVMも提供 VMはホスト間でマイグレーションされる Amazon EC2では4TBのVM(16TBのVMも計画) ビッグデータの解析などに利用 VMはホスト間でマイグレーションされる ホストのメンテナンス、負荷分散などに利用 移送元ホスト 移送先ホスト VM本体 メモリ マイグレーション 1 2 3 3 4 5 更新メモリ
移送先ホストの要件 VMのマイグレーション時には移送先ホストに 十分な空きメモリが必要 移送元ホスト 移送先ホスト VM本体 メモリ マイグレーション 1 1 2 2 3 3 4 4 5 5 空き メモリ 更新メモリ
仮想メモリを用いた マイグレーション 仮想メモリを用いて必要なメモリ容量を確保 必要に応じてページングを行う 物理メモリに入り切らないデータはディスクに格納 物理メモリ容量以上のVMをマイグレーション可能 必要に応じてページングを行う ページイン:ディスクのデータを物理メモリへ ページアウト:物理メモリのデータをディスクへ 移送元ホスト VM本体 移送先ホスト 物理 メモリ ページイン マイグレーション ディスク メモリ 1 2 3 4 5 ページアウト
マイグレーションの性能低下 仮想メモリはマイグレーションと相性が悪い VMのメモリ転送中に大量のページアウトが発生 物理メモリに格納されたデータが後で追い出される VMのメモリ再送時にページインが発生 更新は物理メモリ上でしか行えない VM再開時にページインが発生(KVMの場合) 仮想化ソフトウェア(QEMU-KVM)もページアウト 移送元ホスト VM本体 移送先ホスト マイグレーション 物理メモリ メモリ ディスク 3 4 4 5 1 1 2 2 3 4 4 5 更新メモリ 仮想化ソフトウェアのメモリ 更新されるメモリ
分割マイグレーション [Suetake et al.’16] VMを分割して複数ホストにマイグレーション VM本体と使われそうなメモリをメインホストに メインホストに入りきらないメモリをサブホストに マイグレーション中にページングを発生させない マイグレーション後はリモートページング 必要なメモリをサブホストからページイン 使われていないメモリをサブホストにページアウト 移送元ホスト VM メモリ 移送先メインホスト 移送先サブホスト VM マイグレーション ページング メモリ メモリ 主要なメモリ それ以外
分割マイグレーションの問題点 リモートページングの影響が大きい ネットワーク転送のオーバヘッドが大きい ネットワーク帯域を消費してサービス性能に影響 性能向上には高価な高速ネットワークが必要 ハードウェア障害の影響を受けやすい ネットワーク障害、サブホストの障害 移送先サブホスト1 移送先メインホスト メモリ VM メモリ 移送先サブホスト2 メモリ ページング
提案:VMemDirect VM専用の仮想メモリと連携させることにより VMマイグレーションを高速化 VMごとに独立した仮想メモリを利用 移送元ホストのメモリアクセス履歴を移送先ホスト でも活用 移送元ホスト VM本体 メモリ 移送先ホスト マイグレーション 物理メモリ ディスク
VM専用の仮想メモリ VMごとにNVMe上にスワップ領域を作成 仮想化ソフトウェアのページングを防止 仮想化ソフトウェアがページングを制御 KVMの場合はQEMU-KVM 仮想化ソフトウェアのページングを防止 VMのメモリだけがページングの対象 VM本体 ディスク ページング 1 2 3 4 5 6 仮想化ソフトウェアのメモリ VMのメモリ スワップ領域
VMのメモリの直接転送 VMのメモリを移送先ホストの物理メモリまた はスワップ領域に直接格納 ページングのオーバヘッドを削減 移送元ホストでメモリの格納先を決定 再送時には格納済みのデータを直接上書き ページングのオーバヘッドを削減 物理メモリとNVMe間でデータの移動を行わない 移送元ホスト VM本体 移送先ホスト マイグレーション 物理メモリ NVMe メモリ 1 2 3 4 5
履歴に基づく格納先の決定 メモリアクセス履歴に基づいて格納先を決定 メモリより低速なNVMeへのアクセスを削減 使われそうなメモリデータから順に物理メモリへ 残りのデータはスワップ領域へ メモリより低速なNVMeへのアクセスを削減 再送時に上書きされるデータは物理メモリにある可 能性が高い 移送元ホスト 移送先ホスト アクセス 履歴 VM本体 マイグレーション 物理メモリ NVMe 1 2 3 4 4 5 アクセスされそうな メモリデータ 残りのメモリデータ 11
実装 VMemDirectをQEMU-KVM 2.4.1とLinuxカーネル 4.11に実装 マイグレーション時にメモリの格納先とアクセス履 歴を付加的に転送 VM専用スワップ領域を用いてページング 移送元ホスト VM QEMU-KVM Linuxカーネル 移送先ホスト NVMe QEMU-KVM Linuxカーネル
VM専用スワップ領域 VMのメモリと同じサイズのスパースファイル として作成 オフセットとVMの物理アドレスを対応づけ 実データを持たないブロック(ホール)からなる データを書き込んだブロックだけ実データを持つ データを削除したブロックは再びホールにする VMのメモリ スパースファイル 物理メモリ メモリデータ ホール
スワップ領域のアクセス ダイレクトI/Oを用いて読み書き チャンク単位で読み書き ページキャッシュなしでNVMeに直接アクセス 従来の仮想メモリによるVMのメモリやQEMU-KVM のページアウトを防止 チャンク単位で読み書き 4KBのページ単位ではNVMeの性能を活かせない 連続する256ページ単位でアクセス チャンク NVMe
チャンク単位でのメモリ転送 マイグレーション時にチャンク単位でVMのメ モリを分割 メモリアクセス履歴に基づいてメモリを転送 スワップ領域のアクセスをチャンク単位で行うため メモリアクセス履歴に基づいてメモリを転送 使われそうなチャンクは物理メモリに転送 それ以外のチャンクはスワップ領域に転送 チャンク 物理メモリ VMのメモリ NVMe
スワップ領域への書き込み QEMU-KVMはVMのメモリをページ単位で転送 再送が発生し始めるまではチャンク単位でス ワップ領域に書き込み 送信をチャンク単位にするには大幅な変更が必要 再送が発生し始めるまではチャンク単位でス ワップ領域に書き込み 受信したメモリがアドレス順かどうかで判断 チャンクサイズ分のデータ受信後に一括書き込み 移送元ホスト VM本体 移送先ホスト 物理メモリ NVMe メモリ 1 2 3 4
QEMU-KVMによるページング VMのメモリをuserfaultfd機構に登録 VM内の使われそうにないチャンクを選択 存在しないページへのアクセスを検出 スワップ領域からチャンク単位で読み込み、削除 VMに物理メモリを割り当て、データを書き込み VM内の使われそうにないチャンクを選択 スワップ領域にそのチャンクを書き込み VMのメモリから物理メモリを解放 VM本体 ページイン ディスク 1 2 4 3 5 VMのメモリ スワップファイル ページアウト
メモリアクセス履歴の管理 VMの拡張ページテーブルから各ページのアク セスビットの値を取得 エージングアルゴリズム ページがアクセスされるとアクセスビットは1に 取得後、アクセスビットを0にクリア エージングアルゴリズム 各ページに8ビットを割り 当てて履歴を管理 最上位ビットにアクセスビッ トの値を記録 定期的に右に1ビットシフト 1
実験 VMのマイグレーション性能とマイグレーショ ン後の性能を測定 従来の仮想メモリを用いた場合と比較 VMのサイズは12GBと2GBを使用 移送元・移送先ホスト CPU: Intel Xeon E3-1226 v3 メモリ:16GB ディスク: Samsung NVMe SSD 960 EVO ネットワーク:10ギガビットイーサネット OS: Linux 4.11 仮想化ソフトウェア:QEMU-KVM 2.4.1
マイグレーション時間 VMのマイグレーションにかかる時間を測定 十分なメモリがある場合と比べて従来の仮想メモリ は2.1倍増加 VMemDirectは同程度 チャンク単位で直接転送した効果 ページ単位では従来の仮想メモリより増加 VMのメモリ 12GB
ダウンタイム マイグレーションの最終段階でVMが停止する 時間を測定 十分なメモリがある場合と比べて従来の仮想メモリ は6.8倍の増加 VMemDirectは同程度 仮想化ソフトウェアのページアウトを防いだ効果 VMのメモリ 12GB
スワップ領域の性能の影響 スワップ領域として様々なディスクを用いた場 合のマイグレーション性能を測定 SATA 3 HDD, Crucial MX300 SSDと比較 マイグレーション時間は20〜79%短縮 ダウンタイムは86〜95%短縮 VMのメモリ 2GB 52 16 95% 79% 87% 86% 20% 56%
マイグレーション後のVMの 性能 マイグレーション後のmemcachedの性能を測定 マイグレーション前後で同じベンチマークを実行 従来の仮想メモリと比べて32倍の性能向上 従来の仮想メモリを用いた場合には大量のページイ ンが発生 メモリアクセス履歴の有効性を確認 VMのメモリ 12GB
チャンクサイズの影響 ページングの単位であるチャンクのサイズを変 えてソート時間を測定 VMのメモリ 2GB ページングの単位であるチャンクのサイズを変 えてソート時間を測定 チャンクサイズを大きくすることで実行時間が92% 短縮 チャンクサイズの増加とともにページング回数が減 少
関連研究 Agileライブマイグレーション [Deshpande et al.'16] FlashVM [Saxena et al.'10] ページングのオーバヘッドが大きい FlashVM [Saxena et al.'10] SSDの特性を考慮した仮想メモリ マイグレーション中のページングは減らせない Infiniswap [Gu et al.’17] RDMAを利用したリモートページングの高速化 高価なInfinibandが必要
まとめ 大容量メモリを持つVMのマイグレーションを 高速化するVMemDirectを提案 今後の課題 VM専用の仮想メモリと連携 マイグレーション性能の向上を確認 今後の課題 分割マイグレーションとの比較 様々なアプリケーションでの性能評価 VM専用の仮想メモリのオーバヘッド削減