動かし続けたソフトウェアを、いつ再起動するか

横軸に稼働時間(Operating time)、縦軸にシステムの健全さ(System health)をとったのこぎり歯状の図。健全さは徐々に下がり、下部の障害の線(Failure level)に達する前に垂直に跳ね上がって元へ戻ることを三回繰り返す。跳ね上がる各点には上向きの矢印を添えて再起動(Restart)と示している。

長く動かし続けたソフトウェアは、メモリの断片化や資源の消費が積み重なって、だんだん不安定になります。これをソフトウェアエージングと呼びます。対策のひとつが、壊れる前にあらかじめ再起動してしまうソフトウェア若化 (software rejuvenation) です。

早く再起動しすぎればサービスを止める時間が無駄に増え、遅すぎれば障害を起こしてしまう。最適な間隔がどこかにあります。

この研究では、システムの劣化過程を確率モデルで表し、稼働率を最大にする若化のタイミングを推定する方法を与えました。分布の形をあらかじめ仮定せずに実測データから直接スケジュールを求められる点が特徴です。研究室で最も引用されている成果のひとつです。

元になった論文

Estimating software rejuvenation schedules in high-assurance systems

The Computer Journal (2001)