Toro Kernel

"Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away." Antoine de Saint-Exupery

View on Github

Fast Instantiation

Toro takes 150ms to boot up. It is thus possible to start microservices on demand or to reboot them if something happens.

Reduced footprint

A simple microservice within the kernel takes about 130kb on disk. In addition, Toro can work with less than 4Mb of physical memory. This results in more instances with fewer resources.

VirtIO-based

Toro leverages on VirtIO interface for networking and filesystems. This avoids the use of emulating devices thus speeding up IO.

Immutable

Compiles once and deploy everywhere. Once the binary is generated, it can be used without any changes in any hypervisor thus reducing the maintenance time.

What is it?


Toro is a simple kernel that provides a dedicated API to develop microservices. We propose two kinds of sockets to build microservices: blocking and non-blocking. Blocking sockets are good for intensive-IO microservices whereas non-blocking sockets are good for microservices that can serve a request without blocking. When a microservice executes in Toro, it runs alone in the system thus leveraging on the VM's resources.

How it works?


Toro is a set of libraries that compile within the user application, i.e., the microservice. The user can choose which components are included, .e.g, drivers, filesystems, networking, etc. This results in a binary that can run on top of modern hypervisors like KVM, Xen or VirtualBox. Once the kernel has been initialized, the microservice starts to execute. The microservice runs free from interference from other applications and without the need of users, password or remote login.

Building a Cloud Infrastructure to Deploy Microservices as Microvm Guests


Leveraging virtiofs and vsocket in Toro unikernel


Speeding up the Booting Time of a Toro Appliance


Reducing CPU usage of a Toro Appliance


Supported Hypervisors


Toro is able to run as a guest or baremetal. Currently, it has been successfully tested on Qemu-KVM, Xen, VirtualBox and HyperV. Recently, Toro has been tested on Firecraker and NEMU. These solutions propose an optimized Virtual Machine Monitor (VMM) that simplifies the device model among other features.

Recent Posts


Getting Started


Toro is hosted in Github and includes several examples that can be used as a starting point for your projects. The examples include instructions to build and execute them. You can find these instructions here.

How can you contribute?


There are plenty room for improvements! To report an issue or propose a feature, please follow this guideline. If you want to help in the development, you can pick up any of the issues from here. If you do not know what to pick, do not hesitate to ask! tickets labeled as help wanted may be a good start.

Donations by using BTC


BTC Address