1 Star 0 Fork 237

wangxiao-ccaicc / stratovirt

forked from openEuler / stratovirt 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
design.md 2.39 KB
一键复制 编辑 原始数据 按行查看 历史

StratoVirt Design

Overview

StratoVirt is an open-source lightweight virtualization technology based on Linux Kernel-based Virtual Machine(KVM). StratoVirt reduces memory resource consumption and improves VM startup speed while retains isolation capability and security capability of traditional virtualization. StratoVirt can be applied to microservices or serverless scenarios such as function computing. StratoVirt reserves interface and design for importing more features, even standard virtualization.

Features

  • High isolation based on hardware.
  • Fast cold boot: Benefit from the minimalist design, StratoVirt could boot a microVM in 50ms.
  • Low memory overhead: StratoVirt works with a memory footprint at 3MB.
  • IO enhancement: StratoVirt offers normal IO ability with minimalist IO device emulation.
  • OCI compatibility: StratoVirt offers OCI-compatible interface,which connects to Kubernetes ecosystem perfectly.
  • Multi-platform support: Fully support for Intel and Arm platform.
  • Expansibility: StratoVirt reserves interface and design for importing more features, even expand to standard virtualization support.

Architecture

The following figure shows StratoVirt's core architecture which consist of three layers from top to bottom.

  • OCI compatibility API: StratoVirt uses the QMP protocol to communicate with external systems and is compatible with OCI.
  • BootLoader: StratoVirt uses a simple BootLoader to load the kernel image, instead of the traditional cumbersome BIOS and Grub boot modes, to achieve fast boot.
  • Lightweight: To improve performance and reduce the attack surface, StratoVirt minimizes the simulation of user-mode devices. KVM simulation devices and paravirtualization devices, such as GIC, serial, RTC and virtio devices, are used.

image

Internal Implementation

Running Architecture

A StratoVirt VM is an independent process in Linux. The process has two types of threads: main thread and VCPU thread. The main thread is a cycle for asynchronous collecting and processing events from external modules, such as a VCPU thread. Each VCPU has a thread to process trap events of this VCPU.

Restrictions

  • Only the Linux operating system is supported. The recommended kernel version is 4.19.
  • Only Linux is supported as the client operating system, and the recommended kernel version is 4.19.
  • Supports a maximum of 254 CPUs.
1
https://gitee.com/randy-wangx/stratovirt.git
git@gitee.com:randy-wangx/stratovirt.git
randy-wangx
stratovirt
stratovirt
master

搜索帮助