You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
One virtio-mmio based networking interface (rust-vmmvirtio-net)
initramfs based root filesystems
Support for the following languages:
rustlang
golang
Overall Architecture and Usage
The runtime is used to run code snippets for a well known, pre-defined and fixed set of programming languages.
Its inputs are a language, a code snippet contained in a file, and an API socket. With those arguments the runtime VMM starts a Linux VM which root file system is an initramfs image. The image contains all the needed language dependencies to build and run the code snippet file.
Inside the root file system, a custom serverless agent is the init process. It takes commands from the runtime VMM and executes them. The protocol between the serverless agent and the runtime VMM is a custom one, that can run over an emulated serial interface and is based on the SLIP protocol. Optionally, it can also run over a TCP/IP transport layer with e.g. virtio-net.
Initramfs generation
Initramfs images generation happens every time a new language or a new language version needs to be supported.
Images are generated and prepared in advance, and re-used for every VM instance running a certain language runtime (for a specific or the default version).
Images are based on container reference images for each language.
The image generation tool goes through the following steps:
Pull the OCI container image from a container registry
Unpack the container image on the local filesystem
Amend and customize the image with all the needed serverless components (agent, etc)
Generate a compressed initramfs image
The initramfs init process is the serverless agent.
The runtime VMM (based on lumper) initially listens for API commands on its Unix socket. The infrastructure control plane starts the actual VM and the guest kernel starts the serverless agent as the init process.
The VMM API start command passes the code snippet as its HTTP body and gets a Unix socket path back through the HTTP reply. The code snippet build or execution output is sent by the runtime VMM through this Unix socket.
Tasks
Find a project name
Define a serverless agent protocol
Implement the serverless agent in Rust
Add virtio-net to lumper
Add support for standalone and separate (not embedded in the kernel) initramfs to lumper
The 2023
virt-do
course project is a serverless runtime for the Polycode backend.The (name TBD) runtime will run code snippets in hardware virtualized virtual machines and must have the following properties:
x86-64
andaarch64
virtio-net
)Overall Architecture and Usage
The runtime is used to run code snippets for a well known, pre-defined and fixed set of programming languages.
Its inputs are a language, a code snippet contained in a file, and an API socket. With those arguments the runtime VMM starts a Linux VM which root file system is an initramfs image. The image contains all the needed language dependencies to build and run the code snippet file.
Inside the root file system, a custom serverless agent is the init process. It takes commands from the runtime VMM and executes them. The protocol between the serverless agent and the runtime VMM is a custom one, that can run over an emulated serial interface and is based on the SLIP protocol. Optionally, it can also run over a TCP/IP transport layer with e.g.
virtio-net
.Initramfs generation
Initramfs images generation happens every time a new language or a new language version needs to be supported.
Images are generated and prepared in advance, and re-used for every VM instance running a certain language runtime (for a specific or the default version).
Images are based on container reference images for each language.
The image generation tool goes through the following steps:
The initramfs init process is the serverless agent.
Workload Execution
The runtime VMM starts a VM which root filesystem is the canonical initramfs for the desired language.
The runtime VMM (based on lumper) initially listens for API commands on its Unix socket. The infrastructure control plane starts the actual VM and the guest kernel starts the serverless agent as the init process.
The VMM API start command passes the code snippet as its HTTP body and gets a Unix socket path back through the HTTP reply. The code snippet build or execution output is sent by the runtime VMM through this Unix socket.
Tasks
virtio-net
tolumper
lumper
References
virt-do
project slideslumper
VMMimage-rs
crateThe text was updated successfully, but these errors were encountered: