大容量メモリを持つ 仮想マシンの分割マイグレーション 末竹将人 *1 木津巴都希 *1 Surote Wongpaiboon *2 光来健一 *1 *1 九州工業大学 *2 Kasetsart University 1 大容量メモリを持つVM • IaaS型クラウドの普及 • 1 台のサーバに多くのVMを統合 • 物理マシンを減らすことでコスト削減 • 大容量メモリを持つVMも提供 • Amazon EC2では最大244GiBのVMを提供 • ビッグデータの解析、インメモリ・データベース 244GB 8GB VM VM VM VM VM VM 2 VMのマイグレーションが困難に • VMマイグレーションの必要性 • ホストのメンテナンス時などにVMを別ホストに移動 • 移送先ホストに十分な空きメモリが必要 • 大容量メモリを持つ空きホストを常に確保しておくこ とはコスト面で避けたい • 適切な移送先がなければ... • メンテナンス中はVM上のサービスが長時間停止 移送元ホスト VM 16GB 移送先ホスト マイグレーション 空きメモリ 8GB 3 仮想メモリを用いたマイグレーション • 物理メモリに入りきらないVMのメモリをディス ク上にスワップアウト • VMのメモリは順番に転送 • 物理メモリがいっぱいになるとその順番でスワップアウト • メモリ再送時に物理メモリ上にない場合 • ディスクからスワップインする必要 • 低速なディスクのために性能が大幅に低下 移送元ホスト VM 16GB 移送先ホスト マイグレーション VM 入りきらな いメモリ ディスク 8GB 4 ネットワーク・スワップの利用 • 物理メモリに入りきらないVMのメモリをネット ワーク上の別ホストにスワップアウト • ディスクより高速にスワップが行える • ネットワークが高速であれば • ネットワーク転送量が増加する • 移送先ホストとスワップ用ホストとの間の転送分 移送元ホスト VM 16GB 移送先ホスト マイグレーション スワップ 入りきらな いメモリ 空きメモリ VM 8GB スワップ用ホスト 5 ポストコピー・マイグレーション • VMの実行に最低限必要な情報のみを転送し すぐに移送先のVMに切り替える • オンデマンド転送 • VMがメモリを必要とした時に移送元ホストから転送 • メモリの使用頻度に基づいてスワップできる • バックグラウンド転送 • 使用頻度の高いメモリをスワップアウトしてしまう可能性 移送先ホスト 移送元ホスト VM マイグレーション メモリ VM ディスク メモリ メモリ転送 6 提案 : S-memV • VMを分割して複数のホストにマイグレーション • 1対Nマイグレーション • 1台のホスト上で動作しているVMを複数のホストへ • N対1マイグレーション • 複数のホストにまたがって動作しているVMを1台のホストへ • 部分マイグレーション • 複数のホストにまたがるVMの全体または一部を別のホスト 群へ • 十分な空きメモリを持ったホストがなくても 性能低下を抑えたマイグレーションが可能 7 1対N マイグレーション • VMを複数のホストにマイグレーション • VMの核となる情報と使用頻度の高いメモリ • メインホストに転送 • メインホストに入りきらないVMのメモリ • サブホスト群に転送 • 全ホストの空きメモリを考慮 • 並列転送することによりマイグレーションを高速化 移送元ホスト VM 移送先メインホスト 移送先サブホスト マイグレーション メモリ VM メモリ メモリ転送 VMのメモリ の一部 8 マイグレーション後の動作 • メインホスト上でVMを動作させる • メインホストにないメモリが要求された時 • サブホストからスワップイン • 使用頻度の低いメモリをサブホストへスワップアウト • スワップはマイグレーション中には発生しない • メインホストに入りきらないメモリは直接サブホストに転送 • ネットワーク・スワップと違い、メインホストを経由しない メインホスト サブホスト スワップアウト VM VMのメモリ の一部 メモリ スワップイン 9 ポストコピーにも対応 • ポストコピー・マイグレーションにも適用可能 • オンデマンド転送 • メインホストがいっぱいの場合、使用頻度の低いメモリをサ ブホストへスワップアウト • ネットワーク・スワップと同様 • バックグラウンド転送 • 使用頻度の低いメモリは最初からサブホストに転送 移送先メインホスト 移送先サブホスト 移送元ホスト VM マイグレーション メモリ VM メモリ VMのメモリ の一部 オンデマンド転送 バックグラウンド転送 10 N対1 マイグレーション • 複数ホストにまたがるVMを1台のホストにマイ グレーション • 元のホストのメンテナンス終了後など • メインホストとサブホストのメモリをそれぞれ転送 • マイグレーション中にスワップイン・スワップアウトされた メモリは、未転送の場合と書き換えられた場合のみ転送 移送元サブホスト 移送元メインホスト VM VMのメモリ の一部 メモリ メモリ転送 マイグレーション 移送先ホスト VM メモリ 11 部分マイグレーション • 複数ホストにまたがるVMの一部または全部を別 のホスト群にマイグレーション • 一部のホストをメンテナンスしたい場合など • メインホストをメンテナンスする場合 • VMを新しいメインホストにマイグレーション • サブホストをメンテナンスする場合 • VMのメモリを別のサブホストへ転送 移送元メインホスト 移送元サブホスト VM メモリ VMのメモ リの一部 移送先メインホスト 移送先サブホスト VM メモリ VMのメモ リの一部 12 実装 • QEMU-KVM 2.1.2 に実装 • 1対2 マイグレーションをサポート • システム構成 • S-memVを実装したQEMU-KVM • 移送元ホストと移送先メインホストで動作 • メモリサーバ • 移送先サブホストでVMのメモリの一部を管理 移送元ホスト VM 移送先メインホスト 移送先サブホスト VM マイグレーション QEMU-KVM QEMU-KVM メモリ メモリ メモリ転送 メモリサーバ VMのメモリ の一部 13 QEMU-KVM の拡張 • 閾値を超えるVMのメモリをサブホストに転送 • メインホストに送るメモリのアドレスに閾値を設定 • 例:0x20000000 (512MB) • サブホストに転送する情報 • VMのメモリアドレス、そのメモリページのデータ • メインホストに転送する情報 • サブホストのIPアドレス、送ったVMのメモリアドレス 移送元ホスト VM 移送先メインホスト 移送先サブホスト IPアドレス メモリアドレス VM QEMU-KVM QEMU-KVM メモリ メモリ 閾値以下のメモリ メモリアドレス ページデータ メモリサーバ VMのメモリ の一部 14 メモリサーバ • VMのメモリの一部を管理 000000 • メモリ効率のよい基数木を用いる • キー:VMのメモリアドレス • 値:メモリデータのアドレス 01 2B • スワップアウト要求の受信時 • メモリデータを基数木に登録 • スワップイン要求の受信時 • 基数木を探索しメモリデータを 要求元に送信 02 ... 3F 1000 ... 2000 ... メモリデータ 15 VMのメモリアクセス頻度の取得 • 拡張ページテーブル(EPT)をたどってアクセス ビットが1のページを取得 • アクセスビット • VMがページにアクセスしたときに1にセットされる • QEMU-KVMは定期的にVMのメモリサイズ分のビット マップをカーネルから取得 • その際にアクセスビットを クリア VM QEMU-KVM Linux KVM EPT 16 実験 • S-memVの有効性を確かめる実験を行った • 物理メモリとスワップ領域の使用量 • マイグレーション時間 • 通常時、メモリ負荷時 • 仮想メモリを用いる従来手法と比較 • 使用したVMは仮想CPU 1個,メモリ 2GB 移送元ホスト CPU メモリ OS 仮想化ソフトウェア 移送先メインホスト 移送先サブホスト Intel Xeon E31270v2 3.5GHz Intel Xeon E5640 2.67GHz 16GB 2GB(約1GBは使用中) Linux 3.13.0 QEMU-KVM 2.1.2 - 17 物理メモリとスワップ領域の使用量 • マイグレーション前後での移送先メインホスト でのメモリ使用状況を測定 • 従来手法 • 物理メモリに入りきらなかった約1GBはスワップ領域へ • S-memV マイグレーション前 マイグレーション後 使用量(MB) 1500 従来 1000 500 2000 マイグレーション前 マイグレーション後 1600 使用量(MB) 2000 • 転送閾値の512MBだけ物理メモリの使用量が増加 • スワップ領域は使用されなかった 1200 S-memV 800 400 0 0 物理メモリ スワップ領域 物理メモリ スワップ領域 18 マイグレーション時間(通常時) • マイグレーションにかかる時間を測定 • 移送先ホストに十分なメモリ(4GB)がある場合を基準 とした • 従来手法 40 • S-memV • 28%長くなった • 従来手法よりは 性能低下を抑えられる マイグレーション時間[s] • 45%長くなった 30 十分なメモリ S-memV 従来手法 20 10 0 19 マイグレーション時間(メモリ負荷時) • VMがメモリを頻繁に書き換える時のマイグレー ション時間を測定 • memaslapベンチマークを実行 • VM内でmemcachedを動作させた • 十分なメモリがある場合 100 • 従来手法 • 十分なメモリがある場合の 2.3倍 • S-memV • 十分なメモリがある場合と 比べて11%の増加 マイグレーション時間[s] • 通常時の1.7倍 80 十分なメモリ S-memV 従来手法 60 40 20 0 20 関連研究 • MemX [Deshpande et al. ‘10] • VMが他のホストのメモリを利用可能 • マイグレーション時に他のホストのことは考えない • Scatter-Gather Migration [Deshpande et al. ‘14] • 複数の中間ホストを経由してマイグレーション • 最終的にはすべてのメモリを移送先ホストに転送 • Virtual Multiprocessor [金田ら ’06] vNUMA [Chapman et al. ‘09] • 複数ホストのCPUやメモリを用いて1つのVMを動作 • S-memVではVMを動かすのは1台のホストのみ 21 まとめ • VMを分割してマイグレーションすることを可能 とするシステムS-memVを提案 • 移送先メインホストに入りきらないメモリ • 直接、移送先サブホストに転送 • マイグレーション後 • メインホストとサブホスト間でメモリをスワップしながら VMを実行 • KVMに実装し1対Nマイグレーションを実現 • 従来手法よりマイグレーション時間を短縮できること を確認 22 今後の課題 • メモリアクセス頻度を利用してメインホストに 転送するメモリを選択できるようにする • 現状では閾値を設定して選択 • メインホストとサブホスト間でメモリをスワッ プできるようにする • Linux 4.3のuserfaultfdを利用 • N対1マイグレーションおよび部分マイグレー ションを実現 • 現状では1対Nマイグレーションのみ 23
© Copyright 2025 ExpyDoc