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 $\mu$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.
翻译:虚拟执行环境为系统和应用程序程序员提供了强烈的隔离、按需基础设施、简化设备模型以及许多其他好处。 但是,这些环境往往被视为重量过重,且充斥着微细重或低长任务的业绩陷阱。 虽然其他环境已经表明,通过在本文中区分客人和主机软件堆叠,虚拟环境的足迹可以大大减少。 我们采取不同的做法。 我们通过调查硬件虚拟化环境在功能调用颗粒时的可行性,探索微小的虚拟执行的局限性。 我们引入了一种叫做Virtine或虚拟化子路程的新型抽象,并展示了一种称为Wasp的新型微光谱仪的设计,使这些环境得以实现。 我们通过一系列实例表明,Wasp 能够使启动晚到100美元以下的静脉。 我们还利用Rust语言和C的扩展,为病毒提供了两个方便的编程界面。 我们利用这些扩展实施一个简单的 HTTP服务器,并将 ⁇ 纳入 OpOSL 的外部实施。