  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$\times$ for
Java functions, 26.6$\times$ for JavaScript functions, and 2.07$\times$ for
Python functions. When reproducing a public Serverless trace, Graalvisor
reduces the overall memory footprint by 83% and reduces the tail latency (99
percentile) by 68%.
