When should long-running software be restarted?

A sawtooth chart with operating time on the horizontal axis and system health on the vertical axis. Health falls gradually and jumps back to its original level three times, each jump marked by an upward arrow labelled "Restart", always before reaching the failure level drawn as a dashed line near the bottom.

Software that runs for a long time grows unstable as fragmented memory and consumed resources accumulate. This is software ageing. One remedy is to restart the system deliberately, before it breaks: software rejuvenation.

Restart too early and you waste availability by stopping a healthy service; restart too late and it fails first. An optimal interval lies somewhere in between.

This work represents the degradation process with a stochastic model and gives a method for estimating the rejuvenation timing that maximises availability. Its distinguishing feature is that the schedule is obtained directly from observed data, without assuming a distribution in advance. It is one of the most cited results from our laboratory.

Source paper

Estimating software rejuvenation schedules in high-assurance systems

The Computer Journal (2001)