Using Time Travel to Diagnose Computer Problems, Andrew Whitaker, Richard S. Cox, and Steven D. Gribble

コンピュータの設定を変えて、システムの挙動がおかしくなる事はよくある。それを、システムの設定の変更(というか、ディスクの内容の変更)を保存しておく事で、きちんと動作していた状態に戻しましょう、という話。
これを聞いただけだと、Windowsのチェックポイントを選んでシステムの状態を戻すやつ(なんて言うんだっけ?システムの復元とかだっけか?)と変わらないように聞こえる。だが、本論文で提案する手法を使うと、

  • いつの時点に戻せばよいかを人間が知っている必要がない(この点は、複数のユーザが使うシステムや、デーモンが勝手に設定書き換える場合などにうれしい、と著者らは主張している。)
  • どの設定の変更がまずかったのかが、本論文で提案される手法だとわかる

というメリットがあるらしい。
んで、本論文で紹介されている手法は、Chronusというシステムで実装されている。
このChronusは、以下のものから構成される。

  • タイムトラベルディスク:ディスク変更のログを保存するところ
  • 仮想マシン
  • 解析エンジン:過去の変更を見て、どこでシステムがおかしくなったかを検出するためのエンジン
  • 検査コード:システムが正しいかどうかを判定するためのコード。これはユーザが書く。



なんで、仮想マシンが必要かというと、システムがおかしくなった場合、OSインスタンスを別に動かして、そこでタイムトラベルディスクから昔のディスクの状態をとってきて、検査コード走らせてどこでおかしくなったかを調べるため。タイムトラベルディスクでは、ディスクに対する変更のログが時間順に保存されているので、二分探索を使ってどの変更で検査コードにひっかかるかをみていく。
それで、どのバージョンでおかしくなったかがわかったら、現在のバージョンとのdiffを出力すれば、どこの設定変更でおかしくなったかがわかる、という仕組み。
以下、所感。
検査コードをユーザに書かせるの、いけてない。
どのくらいコストがかかるのか記述されてない。。VMMの上で動かしたりしてるから結構オーバーヘッドありそうだなぁ。しかも、一つのバージョンの設定を検査するのに対して、一つの仮想マシン動かしてるから、検査も時間かかりそーー。。
うーん、全体的に結構いまいち。