* Transparent Process Migration: Design Alternatives and hte Sprite Implementation * Authors: Fred Douglis and John Ousterhout * Field: OS/Structure Sprite allows processes to migrate from onw machine to another at two times: 1) During a call to exec() 2) When a user returns to a workstation that contains migrated processes, the migrated processes are migrated back Assumptions: - many idle hosts (workstations in a university) - users "own" their own workstations - kernel-call oriented OS structure - existing support for efficient RPC Problems with rsh: transparency, eviction, performance, automatic selection. Managing state is the primary problem: - Virtual memory: all accessible memory - open files: id of open files + position + buffers - message channels: info about open channels + message buffers - execution state: PC + registers + condition codes (context switch info) - kernel state: essentially any data or setting accessible through system calls Three choices for each piece of state: 1) transfer and reinstantiate on remote machine 2) forward requests back to machine containing state 3) break transparency Virtual memory is transfer is performed by freezing process, flushing dirty pages to backing store on network file server, then starting process on new machine with no pages. Page faults cause requests to the file server. Tradeoffs: 2 transfers for every dirty page that is reused. No transfers for clean, un-reused pages. 1 transfer for dirty, un-reused pages and clean, reused pages. VM is transferred this way to avoid 1) transferring unused pages 2) minimize time to migrate the VM. 1) is important b/c processes migrate upon exec(). 2) is important b/c evicting processes should be fast when a user returns. Open files have three pieces of state: a file reference, caching information, and access position. File reference and caching information are atomically transferred from one machin to another for open files in order to avoid violating unix file deletion semantics and to avoid turning off local file caching. The access position becomes part of the file server's state if the position is shared. Transparency: migrated processes appear to be running on their home machine. Implemented by 1) making name spaces global system-wide 2) transfer state 3) forward kernel calls home (and sometimes forward, i.e. signals) and 4) ad-hoc stuff (i.e. fork updates process control block on home node). Idle host selection is automatic. "pmake" is a parallel make that migrates jobs to free machines.