仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ 光来健一 千葉滋 東京工業大学 VM を用いたサーバ統合 • サーバ統合が行われてきている – 仮想計算機(VM)の利用が現実的に • 仮想化のハードウェアサポートによる性能向上 – Intel VT, AMD Pacifia • 4 GB 超の物理メモリサポートによるメモリ不足の解消 – PAE, AMD64, EM64T, IA-64 – VM を用いる利点 • サーバを安全に分離できる • 従来の OS が利用できる • 管理が容易になる サーバ サーバ VM VM 統合サーバ リブートリカバリの重要性 • VMM や VM(OS)の再起動は避けられない – アップデート – 予防保守(Rejuvenation) – クラッシュ • リブートリカバリを速くすべき – 再起動後になるべく速く元の サービス品質に戻す – 再起動の影響を最小化する VM VM VM 仮想計算機モニタ (VMM) ハードウェア VMM の従来のリブートリカバリ • 全ての VM を起動し直すのに時間がかかる – OS の起動、サービスの起動 – 再起動前には全ての VM を シャットダウン • VM のサスペンド・レジューム? – VM のメモリイメージの保存・ 復元に時間がかかる • ディスクを読み書きする必要 • VM のメモリサイズが増大 VM VM VMM VM VM の従来のリブートリカバリ • 十分にファイルキャッシュに載るまで ファイルシステムの性能が低下 – 再起動により OS のファイル キャッシュが失われる – キャッシュミスによりディスク アクセスが増加 VM OS キャッシュ VMM • OS 起動時にファイル先読み? – 起動時のディスクアクセスと競合 • キャッシュに使えるメモリが増大 提案:高速なリブートリカバリ • 高速化手法 – 再起動前のメモリの内容を再起動後に再利用 できるようにする • 提供する機構 – VMM のための Warm-VM Reboot • “Suspend To RAM” を VM に対して実現 – ノート PC のサスペンド・レジューム – VM のための Warm-cache Reboot • ファイルキャッシュを残す OS の部分再起動 Warm-VM Reboot • VMM の再起動後に VM を高速に再開 – VM を高速にサスペンド • メモリイメージをそのまま凍結 VM VM – ディスクに保存しない – VMM の再起動中に VM の メモリイメージを保持 VMM • BIOS のクイックブート機能を利用 – 計算機の再起動中にメモリの内容を 保持できる – VM を高速にレジューム • メモリイメージの凍結を解除 VM メモリ イメージ Warm-cache Reboot • VM の再起動後に OS のキャッシュミスを 軽減 VM – OS の再起動中に再起動前の ファイルキャッシュを保持 • VM に再起動前と同じ物理 メモリを割り当てる • ファイルキャッシュに使われて いるメモリを予約する – ファイルアクセス時に再起動前の キャッシュが見つかれば再利用 OS キャッシュ VMM VM メモリ 実装 • Xen 3.0.0、Linux 2.6.12.6 に実装 キャッシュマッピング テーブル ドメイン 0 ファイル情報→ キャッシュページ カーネル ドメイン U カーネル P2M マッピング テーブル 疑似物理メモリ→ マシンメモリ 仮想的に連続した メモリに見せる イベント 0 1 5 ... 疑似物理メモリ 4 2 3 ... ハイパーコール Xen 0 1 2 3 4 5 ... マシンメモリ Warm-VM Reboot の実装(1/2) • ドメインをサスペンド – Xen からサスペンド イベントを送信 – ドメインの状態をメモリ に保存 • レジスタ • イベントチャンネル – ドメインのメモリを予約 ドメイン U サスペンド 処理 カーネル 4 2 3 ... サスペンド ハイパーコール サスペンド イベント Xen 予約 0 1 2 3 4 5 ... マシンメモリ ドメインの 状態を保存 Warm-VM Reboot の実装(2/2) • Xen を再起動 – CPU キャッシュを フラッシュ • メモリに書き戻す – クイックブートにより メモリの内容を保持 • ドメインをレジューム – ドメインに同じメモリを 再割り当て ドメイン U レジューム 処理 再割り当て カーネル 4 2 3 ... ハイパーコール からの復帰 Xen ドメインの 状態を復元 0 1 2 3 4 5 ... マシンメモリ Warm-cache Reboot の実装 • キャッシュマッピングテーブル – キャッシュに読み込まれた時に エントリを追加 – キャッシュが破棄された時に エントリを削除 ドメイン U カーネル 仮想 ディスク 4 2 3 ... Xen 0 1 2 3 4 5 ... マシンメモリ Warm-cache Reboot の実装 • キャッシュマッピングテーブル – ファイルキャッシュに読み込ま れた時にエントリを追加 – ファイルキャッシュが破棄され た時にエントリを削除 ドメイン U カーネル 仮想 ディスク 4 2 3 ... • ドメインの再起動時 – ドメインに同じメモリを 再割り当て • キャッシュマッピングテーブル を復元 • ファイルキャッシュを再利用 Xen 0 1 2 3 4 5 ... 再割り当て マシンメモリ 実験:Warm-VM Reboot • 測定内容 – VM のサスペンド / レジュームにかかる時間 • VM のメモリサイズと VM の数の影響を測定 – VMM の再起動時のサーバ処理性能の推移 • httperf で Apache にリクエストを送り続けた • 比較対象 – Xen サスペンド / レジューム – シャットダウン / 起動 サーバ Pentium 4 3.0 GHz PC3200 DDR SDRAM 2 GB SATA HDD 160 GB GbE NIC クライアント Pentium 4 3.0 GHz メモリ 1 GB, GbE NIC VM のメモリサイズの影響 • Warm-VM Reboot サスペンド / レジューム – メモリサイズ非依存 – 0.6 秒 / 0.6 秒 サスペンド • Xen サスペンド / レジューム – メモリサイズに比例 – 28 秒 / 20 秒 (1 GB 時) • シャットダウン / 起動 – 12 秒 / 11 秒 – 起動するサービスに依存 レジューム VM 数の影響 • Warm-VM Reboot サスペンド / レジューム – 2.3 秒 / 2.0 秒 (6 VMs) • Xen サスペンド / レジューム サスペンド – 45 秒 / 37 秒 (6 VMs) • シャットダウン / 起動 – 25 秒 / 56 秒 (6 VMs) – 起動するサービスに依存 レジューム VM メモリサイズ:256 MB サービスのダウンタイム • Warm-VM Reboot – 40 秒 • Xen サスペンド / レジューム – 104 秒 ドメイン 0 のシャットダウン中に ドメイン U が動作できる Warm-VM Reboot Xen サスペンド / レジューム • シャットダウン / 起動 – 78 秒 VM メモリサイズ:1 GB シャットダウン / 起動 ドメイン U の終了・開始処理に 時間がかかる 実験:Warm-cache Reboot • 測定内容 – VM 再起動の前後のファイル読み込み性能 • 再起動前に2回、再起動後に2回測定 – VM 再起動の前後のウェブサーバの処理性能 • httperf で Apache にリクエストを送信 – VM 再起動時のサーバ処理性能の推移 • httperf で Apache にリクエストを送り続けた VM メモリサイズ:1 GB VM 再起動前後の性能 従来 Warm-cache Rebooot 1400 • Warm-cache Reboot 800 600 400 • ファイル読み込み 15 倍 • ウェブサーバ 3 倍 200 0 1回目 – 再起動後1回目の性能 は2回目より低い 2回目 1回目 2回目 2回目 1回目 2回目 70 60 requests/sec • ファイル読み込み 64 % • ウェブサーバ 92 % • ファイルキャッシュ以外の キャッシュミスが原因 ファイル 1000 MB/sec – 再起動後1回目の性能 が向上 1200 ウェブ 50 40 30 20 10 0 1回目 起動後 再起動後 VM 再起動時のサーバ性能の推移 • Warm-cache Reboot – 再起動後 20 秒は 6 % 性能低下 Warm-cache Reboot • 従来の再起動 – 再起動後 33 秒は 44 % 性能低下 • 先読み – 先読み処理がウェブ サーバの処理を阻害 従来 先読み 関連研究 • Recovery Box [Baker et al.’92] – アプリケーションの状態を再起動後に復元 – アプリケーションに依存 • Rio ファイルキャッシュ [Chen et al.’96] – 再起動時にダーティキャッシュを書き戻す – キャッシュは再起動によって失われる • Live Migration [Clark et al.’05] – VM をほとんど停止させずに他のホストに移動 – 移動に時間がかかる まとめ • 高速なリブートリカバリを提案 – Warm-VM Reboot • VMM の再起動後に VM を高速にレジューム • 再起動によるダウンタイムを約半分に – Warm-cache Reboot • VM の再起動後にファイルキャッシュを再利用 • 再起動直後のサーバ性能の低下を 6 % に 今後の課題 • 再起動後に再利用するメモリの保護 – クラッシュ時に破壊されないようにする – 実装はほぼ完了 • x86_64 アーキテクチャへの実装 – より多くのメモリが搭載できる – 実装は途中まで完了 • より現実的なワークロードでの実験 – 今回は最も効果的な実験を行った
© Copyright 2024 ExpyDoc