Elasticizing Linux via Joint Disaggregation of Memory and Computation
In this paper, we propose a set of operating system primitives which provides a scaling abstraction to cloud applications in which they can transparently be enabled to support scaled execution across multiple physical nodes as resource needs go beyond that available on a single machine. These primitives include stretch, to extend the address space of an application to a new node, push and pull, to move pages between nodes as needed for execution and optimization, and jump, to transfer execution in a very lightweight manner between nodes. This joint disaggregation of memory and computing allows for transparent elasticity, improving an application's performance by capitalizing on the underlying dynamic infrastructure without needing an application re-write. We have implemented these primitives in a Linux 2.6 kernel, collectively calling the extended operating system, ElasticOS. Our evaluation across a variety of algorithms shows up to 10x improvement in performance over standard network swap.
READ FULL TEXT