A Fast Rejuvenation Technique for Server

仮想計算機を用いたサーバ統合に
おける高速なソフトウェア若化手法
光来健一
千葉滋
東京工業大学
VMを用いたサーバ統合
 サーバ統合が行われるようになっている
 複数のサーバ計算機を1台の計算機に統合
 仮想計算機(VM)が用いられるように
 VMは仮想計算機モニタ(VMM)上で動く
 システムリソースを管理
VM
VM ...
VMM
ハードウェア
VMMのソフトウェア・エージング
 VMMのソフトウェア・エージングが問題に
 ソフトウェア・エージングとは
 ソフトウェアの状態が時間とともに劣化する現象
 例:システムリソースの不足
 ソフトウェア・エージングは全てのVMに影響を及
ぼす
 例:性能低下
VM
VM ...
VMM
VMMのソフトウェア若化
 予防保守
 時々VMMを停止させ、内部状態を正常に戻して
から再開する
 VMMのソフトウェア・エージングがVMに影響を
及ぼす前に実行される
 典型的な例:VMMの再起動
 内部状態を自動的に完全に元に戻せる
 最も簡単な手法
問題(1/2):ダウンタイムの増大
 VMMの再起動は以下を必要とする
 VM上で動いているすべてのOSの再起動
 OS再起動にかかる時間は増大している
 1台の計算機で動かせるVMの
数の増加
 サービスの停止・開始にかかる
時間の増大
 ハードウェアリセット
 BIOS の POST (power-on
self test) に時間がかかる
VM
OS
OS
VMM
...
問題(2/2):性能低下
 OS再起動でファイルキャッシュが失われる
 ファイルキャッシュが回復するまでOSは性能を回
復できない
 OSのファイルアクセス性能はファイルキャッシュに強
く依存
 ファイルキャッシュの回復にかかる
時間が増加
プロセス
ファイル
キャッシュ
 ファイルキャッシュのサイズが増大
 より多くのメモリがVMに割り当て可能に
 空きメモリはファイルキャッシュになる
OS
ディスク
Warm-VM Reboot
 高速なソフトウェア若化手法
 効率よくVMMだけを再起動
 VMM再起動はOS再起動を必要としない
 基本的なアイデア
 VMMの再起動前にすべてのVMをサスペンド
 再起動後にVMをレジューム
 チャレンジ
 VMの巨大なメモリイメージをいかに効率よく扱うか?
VMのオンメモリ・サスペンド
 VMのメモリイメージをメインメモリ上で凍結
 メモリ領域を予約するだけ
 メモリサイズにほとんど依存しない
 メモリイメージを遅いディスクに保存するのは効率
が悪い
 VMのためのACPI S3状態
VM
 Suspend To RAM
 従来のサスペンドは
ACPI S4状態
ディスク
凍
結
メインメモリ
VMのオンメモリ・レジューム
 メインメモリ上に保持されているメモリイメージ
を解凍
 VMのメモリとして直接再利用
 遅いディスクから読み込む必要がない
 OSのファイルキャッシュも復元される
 性能低下がない
VM
ディスク
解
凍
メインメモリ
VMMのクイック・リロード
 新しいVMMをハードウェアリセットせずに直
接起動
 VMのメモリイメージはVMM再起動を通して保持
される
 ソフトウェア的にメモリイメージを保持し続けられる
 ハードウェアリセットはこれを保証しない
 VMMを高速に再起動できる
メインメモリ
 ハードウェアリセットの
オーバヘッドなし
VM
新VMM
preload
旧VMM
他の手法との比較
 Cold-VM Reboot
 OS再起動を必要とする
 Saved-VM Reboot
 Warm-VM Rebootのナイーブな実装
 メモリイメージをディスクに保存
再起動の手法
Cold-VM Saved-VM Warm-VM
VM数に依存
Yes
No
No
サービスに依存
Yes
No
No
Yes
No
No
No
VMのメモリサイズに依存 No
性能低下
Yes
可用性のためのモデル
 VMMとOSの両方のソフトウェア若化を考え
る必要がある
 Warm-VM Reboot
 OSのソフトウェア若化は
独立して行える
 Cold-VM Reboot
 OSのソフトウェア若化は
VMMのそれに影響される
 OSのソフトウェア若化の
回数が増加する
OSのソフトウェア若化
VMMのソフトウェア若化
OSのソフトウェア若化
VMMのソフトウェア若化
RootHammer
 Warm-VM Reboot を Xen 3.0.0 に実装
 オンメモリ・サスペンド/レジューム
 Xen のサスペンド/レジュームがベース
 VMメモリから物理メモリへの
VM
メモリ
マッピングを管理
 クイック・リロード
 Linux の kexec 機構がベース
 最近の Xen には同様の機構が含まれている
 そのままではメモリイメージの再利用はできない
物理
メモリ
実験
 Warm-VM Reboot がダウンタイムと性能低
下を減少させられるかどうか調べた
 比較
 OS再起動を伴う Cold-VM Reboot
 サスペンド/レジュームを使った Saved-VM Reboot
サーバ
...
Linux
Linux
クライアント
VMM
2 dual-core 12 GB 15,000 rpm gigabit
Opteron SDRAM SCSI disk Ethernet
Linux
オンメモリ・サスペンド/レジュームの
性能
 メモリ 11 GBのVMのサス
ペンド/レジューム時間
 オンメモリ: 1 秒
 Xen: 280 秒 (4分40秒)
 メモリサイズに比例
 11 VMのサスペンド/
レジューム時間
 OS再起動: 58 秒
 VM数に比例
クイック・リロードの効果
VMMのブート
ハードウェアリセット
VMMのシャットダウン
 VMなしでVMMのみの
再起動時間を測定
 Warm-VM Reboot
70
60
 11 秒
 クイック・リロードの時間
はほぼ 0
50
40
 Cold-VM Reboot
30
 59 秒
 ハードウェアリセットに起
因する時間は 48 秒
20
10
0
Warm-VM
Cold-VM
サービスのダウンタイム
 Warm-VM Reboot
 ほぼ一定
 42 秒
 Saved-VM Reboot
 VM数に比例
 約 7 分 (11 VM)
 Cold-VM Reboot
 サービスの種類に依存
 約 2.5 分 (sshd)
 約 4 分 (JBoss)
JBoss の稼働率
 Warm-VM Reboot は4つの9を達成
 仮定
 OSのソフトウェア若化を毎週行う
 ダウンタイムは 34 秒
 VMMのソフトウェア若化を4週ごとに行う
 平均してOSのソフトウェア若化の 0.5 週後
1週
OSのソフトウェア若化
VMのソフトウェア若化
0.5 週
Warm-VM
Cold-VM
Saved-VM
99.993%
99.985%
99.977%
性能低下
 Apache ウェブサーバの
スループットを測定
 VMM再起動の前後
 Warm-VM Reboot
 性能低下なし
 Cold-VM Reboot
 69% の性能低下
VMMのソフトウェア・エージングは
実際に起こるか?
 Xen にはメモリリークのバグがあった
 VMの再起動時
 エラー処理を行う際
 Xen のヒープサイズはあまり大きくない
 デフォルトのヒープサイズは 16 MB
 x86_64 アーキテクチャではある程度増やせる
 i386 アーキテクチャでは変更できない
 メモリリークするとメモリ不足になりやすい
VMMとみなすべき範囲は実は広い
 Xen のドメイン0はVMMとみなすべき
 他のVMの I/O 処理を行う特権VM
 I/O 処理の遅れはVMの性能に影響
 VMMに強く依存
 ドメイン0の再起動はVMMの再起動を伴う
 改造された Linux が動作
 カーネルメモリやスワップ
スペースが枯渇する可能性
ドメイン0
OS
VM
VM
VMM
関連研究
 Microreboot [Candea et al.'04]
 サブコンポーネントの一部だけを再起動
 Warm-VM Reboot は親コンポーネント(VMに対す
るVMM)だけを再起動
 チェックポイント/リスタート [Randell '75]
 OSプロセスを保存・復元
 VMのサスペンド/レジュームに似ている
 サスペンド/レジュームの最適化
 メモリイメージの差分だけを保存
 メモリイメージを圧縮して保存
まとめ
 Warm-VM Reboot を提案
 オンメモリ・サスペンド/レジューム
 VMのメモリイメージを凍結・解凍
 クイック・リロード
 VMMの再起動を通してVMのメモリイメージを保持
 VMMの高速なソフトウェア若化を実現
 ダウンタイムを最大 83% 削減
 ソフトウェア若化後の性能低下なし