仮想計算機を用いたサーバ統合に

仮想計算機を用いたサーバ統合に
おける高速なリブートリカバリ
光来健一 千葉滋
東京工業大学
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 アーキテクチャへの実装
– より多くのメモリが搭載できる
– 実装は途中まで完了
• より現実的なワークロードでの実験
– 今回は最も効果的な実験を行った