Graalvisor: Virtualized Polyglot Runtime for Serverless Applications
Serverless is a new attractive computing model that offers great scalability and elasticity, taking the infrastructure management burden away from users, and enabling a pay-as-you-use billing model. As a result, Serverless is becoming increasingly popular, and new use cases have recently been proposed. Examples include video and image processing, Machine Learning inference and training, and data analytics. However, Serverless is currently supported by bloated virtualization stacks composed of a combination of virtual machines and/or containers, and language runtimes. None of these were to host lightweight and fast-executing Serverless workloads. To reduce the virtualization stack bloat, we propose Graalvisor, a virtualized polyglot language runtime capable of running multiple concurrent functions with minimal overhead. Graalvisor is designed to efficiently run lightweight and short-running Serverless functions, each running in a tiny execution environment that launches under 500 us. A single Graalvisor instance can run thousands of functions written in many different languages. By virtualizing a single runtime across many function invocations, Graalvisor reduces virtualization stack redundancy, resulting in lower memory consumption and less cold-starts. On a set of established Serverless functions, Graalvisor improves the throughput per memory (ops/sec/GB) on average by 170× for Java functions, 26.6× for JavaScript functions, and 2.07× for Python functions. When reproducing a public Serverless trace, Graalvisor reduces the overall memory footprint by 83 percentile) by 68
READ FULL TEXT