关于 ZVM
ZVM源自自主研发的嵌入式实时虚拟机,经过持续演进,已发展成为一款嵌入式虚拟化实时操作系统。 ZVM将虚拟化能力内生于实时操作系统,在同一系统底座上支撑本地任务与多Guest OS运行,并面向复杂外设提供资源管理、隔离与复用能力。
ZVM采用原创“RTOS原生虚拟化”架构,以一体化、最小栈、无管理域为核心:将实时内核与虚拟化功能一体化,减少关键执行路径中的特权级与上下文切换;通过虚拟化栈最小化,裁减非必要的软件层级与通用组件;通过无管理域服务下沉,将虚拟I/O、通信等系统服务模块化内置,实现能力按需扩展。由此形成少切换、少组件、少耦合的嵌入式虚拟化架构。
围绕内核实时、外设复用与安全隔离,ZVM形成了HyperVHE、双核分治、1V1静态绑核、E4中断保障、Guest OS自恢复、VirtIO内置、SR-IOV复用、TSN融合、GPU多显等关键核心技术,并进一步覆盖故障恢复、确定性网络与图形显示等系统能力。
面向产品化应用,ZVM配套VisualZVM、自动化测试和版本交付体系,形成从开发调试、测试验证到版本交付的全流程工程支撑。目前已面向瑞芯微、飞腾等平台推出发行版,支持Linux、openEuler Embedded、OpenHarmony、Android、Zephyr、FreeRTOS、NuttX等多种Guest OS。
各Hypervisor对比
ZVM与Xen、Xvisor、Jailhouse、BAO Hypervisor相比,在初始化、内核隔离、外设管理、可视化工具、自动化测试等各方面具备全面领先优势。
| 对比项 | Xen | Xvisor | Jailhouse | BAO Hypervisor | QNX Hypervisor | ZVM |
|---|---|---|---|---|---|---|
| 是否依赖Linux完成初始化? | 是❌ | 否✅ | 是❌ | 否✅ | 否✅ | 否✅ |
| 是否依赖Linux管理Guest OS生命周期? | 是❌ | 否✅ | 是❌ | 否✅ | 否✅ | 否✅ |
| 是否依赖Linux管理I/O? | 是❌ | 否✅ | 是❌ | 否✅ | 否✅ | 否✅ |
| Hypervisor与Guest OS是否共享物理CPU? | 是❌ | 是❌ | 否✅ | 否✅ | 否✅ (默认) |
否✅ (默认) |
| 是否支持静态分区? | 否❌ | 否❌ | 是✅ | 是✅ | 是✅ | 是✅ |
| 是否支持外设VirtIO共享? | 是✅ (Domain 0方式) |
是✅ (内置方式) |
否❌ | 否❌ | 是✅ (内置方式) |
是✅ (内置方式) |
| 是否支持外设SR-IOV共享? | 是✅ (Domain 0方式) |
否❌ | 否❌ | 否❌ | 否❌ | 是✅ (内置方式) |
| 是否具备专门的可视化管理工具? | 否❌ | 否❌ | 否❌ | 否❌ | 是✅ | 是✅ |
| 是否具备自动化测试系统? | 否❌ | 否❌ | 否❌ | 否❌ | 是✅ | 是✅ |
测试说明:为确保Benchmark测试结果的准确性,以下测试均在关闭PMU、客户OS心跳监测等可能影响性能表现的功能后进行。
ZVM-RK3588v2.1发行版性能表现——ZVM关键性能指标
| 序号 | 指标项 | 指标值 | 测试方法 |
|---|---|---|---|
| 1 | 上电自启动时间 | < 2.2 s | MobaXterm_26.3输出自带毫秒级时间戳 |
| 2 | 虚拟化性能损耗 | < 2% | UnixBench测试集(实测打分体现) |
| 3 | VirtIO-Net吞吐量损耗 | < 8% | iperf3测试集(实测带宽体现) |
| 4 | Guest OS时间同步精度 | < 25 ns | 高精度定时器计数方式(耗时1 ms内) |
| 5 | 共享内存通信延迟(Zephyr-Zephyr) | < 10 us | timing_test测试集(基于高精度定时器) |
| 6 | 共享内存通信带宽 (Linux-Linux) | > 1000 Mbps |
ZVM-RK3588v2.1发行版性能表现——Guest OS(Zephyr RTOS)实时性指标
| 序号 | 指标项 | 指标值 | 测试方法 |
|---|---|---|---|
| 1 | 上电自启动时间 | < 3 s | MobaXterm_26.3输出自带毫秒级时间戳 |
| 2 | 最大中断响应延迟 | < 9 us | irqtest测试集(基于高精度定时器) |
| 3 | 最大唤醒延迟 | < 10 us | cyclictest测试集 |
| 4 | 最大抢占延迟 | < 3 us | task_preempt测试集 |
| 5 | 最大上下文切换延迟 | < 3 us | task_switch测试集 |
| 6 | 最大完成时间抖动 | < 2 us | task_jitter测试集 |
ZVM-RK3588v2.1发行版性能表现——Guest OS(NuttX RTOS)实时性指标
| 序号 | 指标项 | 指标值 | 测试方法 |
|---|---|---|---|
| 1 | 上电自启动时间 | < 3 s | MobaXterm_26.3输出自带毫秒级时间戳 |
| 2 | 最大中断响应延迟 | < 8 us | irqtest测试集(基于高精度定时器) |
| 3 | 最大唤醒延迟 | < 10 us | cyclictest测试集 |
| 4 | 最大抢占延迟 | < 3 us | task_preempt测试集 |
| 5 | 最大上下文切换延迟 | < 3 us | task_switch测试集 |
| 6 | 最大完成时间抖动 | < 2 us | task_jitter测试集 |
ZVM-RK3588v2.1发行版性能表现——Guest OS(FreeRTOS)实时性指标
| 序号 | 指标项 | 指标值 | 测试方法 |
|---|---|---|---|
| 1 | 上电自启动时间 | < 3 s | MobaXterm_26.3输出自带毫秒级时间戳 |
| 2 | 最大中断响应延迟 | < 8 us | irqtest测试集(基于高精度定时器) |
| 3 | 最大唤醒延迟 | < 10 us | cyclictest测试集 |
| 4 | 最大抢占延迟 | < 4 us | task_preempt测试集 |
| 5 | 最大上下文切换延迟 | < 5 us | task_switch测试集 |
| 6 | 最大完成时间抖动 | < 2 us | task_jitter测试集 |
社区与发行
- ZVM 社区代码仓库: https://atomgit.com/openeuler/zvm
- ZVM 镜像发行仓库: http://esnl.hnu.edu.cn/zvm/zvm-releases/index.html