The Sprite operating system allows executing processes to be moved between hosts at any time. We use this process migration mechanism to offload work onto idle machines, and also to evict migrated processes when idle workstations are reclaimed by their owners. Sprite's migration mechanism provides a high degree of transparency both for migrated processes and for users. Transparency is ensured by managing shared data structures on a single site and redirecting operations on those structures to the host managing them. Idle machines are identified, and eviction is invoked, automatically by daemon processes. On Sprite it takes up to a few hundred milliseconds on SPARCstation 1 or DECstation 3100 workstations to perform a remote exec, while evictions typically occur in a few seconds.

The pmake program uses remote invocation to invoke tasks concurrently. Compilations commonly obtain speedup factors in the range of three to six; they are limited primarily by contention for centralized resources such as file servers. CPU-bound tasks such as simulations can make more effective use of idle hosts, obtaining as much as eight-fold speedup over a period of hours.

Process migration has been in regular service for almost two years, used by over 20 day-to-day users of Sprite for nearly all compilations as well as most simulations. Empirical measurements of migration use over periods of time ranging from a month to a year are presented. These measurements include the overall use of migration (31% of all processing in Sprite was performed using migrations), the availability of idle hosts (71% of hosts were available for migration during the day, with more hosts available at other times), and the correlation between host idle time and likelihood of eviction (evictions were likely only when hosts that had just become idle were used).




Download Full History