Virtines: Virtualization at Function Call Granularity

04/14/2021
by   Nicholas Wanninger, et al.
0

Virtual execution environments provide strong isolation, on-demand infrastructure, simplified device models, and many other benefits for systems and application programmers. However, these environments are often perceived as heavyweight and rife with performance pitfalls for fine-grained or low-latency tasks. While others have shown that a virtual environment's footprint can be drastically reduced by paring down the guest and host software stacks, in this paper we take a different approach. We probe the limits of fine-grained, virtual execution by investigating the viability of hardware virtualized environments at function call granularity. We introduce a new abstraction called a virtine, or virtualized subroutine, and present the design of a new microhypervisor called Wasp that enables them. Through a series of examples we show that Wasp can enable virtines with start-up latencies as low as 100 μs. We also provide two convenient programming interfaces to virtines, using the Rust language and using extensions to C. Using these extensions we implement a simple HTTP server and integrate virtines into an off-the-shelf implementation of OpenSSL.

READ FULL TEXT

Please sign up or login with your details

Forgot password? Click here to reset