Time-sharing is a useful feature in heavily utilized public network testbeds. Emulab, the popular network research testbed, supports a primitive form of time-sharing by swapping-out idle experiments to free up physical resources. However, the swap-out operation destroys experiment runtime state and experimenters have to manually recreate the state upon a subsequent swap-in--a tedious and sometimes impossible proposition.
For a testbed to realize the full benefits of time-sharing, the experiment swapping operation should be stateful, transparent and fast. Towards this end, we are extending Emulab with a stateful-swapping facility.
We address two key challenges in building this system involving state management and providing application transparency: how to efficiently handle experiment runtime state of several gigabytes so that time-sharing can be fast and how to prevent experiments from perceiving periods of swap-out.
Our approach leverages the advances in Virtual Machine Monitors (VMM) and Storage Virtualization. We address state-related challenges by applying caching, copy-on-write, pipelining and gray-box techniques. To prevent the perception of swap-out periods, we virtualize an experiment's notion of time.
This thesis presents the design, an initial implementation and evaluation of the stateful swapping infrastructure.