  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.
