Skip to main content
Josen-B
AxVisor Kernel Engineer @ QCLIC
View all authors

AxVisor 与 Jailhouse, ZVM 性能对比

· 3 min read
Josen-B
AxVisor Kernel Engineer @ QCLIC

在飞腾E2000和RK3588处理器平台上,通过freertos和zephyr操作系统的性能测试,对比Axvisor和同类型的两个hypervisor(Jailhouse和ZVM)的性能。性能测试涉及任务创建、上下文切换、中断响应和线程调度等多项指标。

一、 RTOS Benchmark

在 RTOS Benchmark 测试中,我们选取了 FreeRTOS 作为客户机系统,对任务创建、消息传递、上下文切换等典型实时操作进行了对比。从结果来看,Axvisor 的性能相比zvm和jailhouse还有一点差距。

Phytium E2000

FreeRTOS Benchmark 测试结果

RK3588

RK3588 FreeRTOS Benchmark 测试结果

从图中可以看到,Axvisor 在多个测试项上的耗时控制较为平稳,说明其在轻量级 RTOS 场景下能够较好地兼顾虚拟化开销与实时性需求。这也表明 Axvisor 更适合对任务响应速度和调度确定性有要求的嵌入式应用场景。 结合 RK3588 平台的测试结果来看,Axvisor 在不同硬件平台上的整体表现具有一定一致性,说明其 RTOS 虚拟化路径具备较好的可迁移性。不过从部分测例来看,Axvisor 与 ZVM、Jailhouse 之间仍然存在一定差距,后续还可以继续围绕任务切换和调度路径做针对性优化。

二、latency_measure

在 latency_measure 测试中,我们使用 Zephyr 客户机进一步评估中断响应和短路径调度延迟。该测试更关注系统在高频事件触发下的即时响应能力,能够更直观地反映 hypervisor 对实时性的影响。

Phytium E2000

Zephyr latency_measure 测试结果

RK3588

RK3588 Zephyr latency_measure 测试结果

测试结果表明,Axvisor 在延迟测量中展现出较稳定的响应特征,整体延迟分布较为集中,没有出现明显的大幅抖动。Axvisor 在 很多测例中用时更少,在实时响应能力方面,具备部分领先优势。 从 RK3588 的测试图中也可以看到,Axvisor 在不少测例中依然保持了较短的响应时间,说明这种优势并不局限于单一平台。两组结果结合起来,能够更好地说明 Axvisor 在 Zephyr 场景下已经具备较强的实时响应能力与平台适应性。

从总体结果来看,Axvisor 在部分性能指标上具备明显优势,说明其在理想运行条件下可以提供非常快的实时任务响应能力。但同时,最大延迟偏大的现象也说明在个别时刻仍存在较大的抖动空间,这部分还有进一步优化的余地。综合来看,Axvisor 已经展现出较强的实时调度潜力,但在极端情况下的尾延迟控制方面仍值得持续改进。

AxVisor 文件系统性能测试

· 6 min read
Josen-B
AxVisor Kernel Engineer @ QCLIC

总体性能

我们在飞腾派 E2000 上测试了 Axvisor 文件系统的性能,同时与 Linux 文件系统的性能做了对比。 AxVisor 在 31 个测试中有 29 个操作显著快于 Linux,尤其是在小文件 / 元数据 / 目录 / 删除类操作优势极其明显

操作名称AxVisor耗时Linux耗时加速比AxVisor吞吐Linux吞吐
创建 100 个 1KB 文件30.46ms579.76ms19.03x3.21 MB/s0.17 MB/s
创建 50 个 4KB 文件15.10ms294.29ms19.49x12.93 MB/s0.67 MB/s
创建 20 个 64KB 文件12.00ms195.77ms16.31x104.18 MB/s6.57 MB/s
创建 1MB 文件3.65ms31.58ms8.65x274.16 MB/s33.33 MB/s
创建 10MB 文件43.65ms192.91ms4.42x229.09 MB/s52.63 MB/s
创建 50MB 文件438.48ms740.96ms1.69x114.03 MB/s67.56 MB/s
创建 100MB 文件1.171s1.458s1.25x85.40 MB/s68.96 MB/s
顺序写 50MB 文件 (4KB 块)19.839s78.883s3.98x2.52 MB/s0.63 MB/s
顺序写 100MB 文件 (64KB 块)7.199s11.863s1.65x13.89 MB/s8.43 MB/s
读取 100 个 1KB 文件8.52ms503.91ms59.14x11.46 MB/s0.19 MB/s
读取 50 个 4KB 文件5.88ms311.19ms52.92x33.22 MB/s0.63 MB/s
读取 20 个 64KB 文件5.36ms138.92ms25.92x233.10 MB/s9.61 MB/s
读取 1MB 文件2.73ms20.67ms7.57x366.73 MB/s50.00 MB/s
读取 10MB 文件26.97ms32.80ms1.22x370.84 MB/s333.33 MB/s
读取 50MB 文件149.76ms56.77ms0.38x333.88 MB/s1000.00 MB/s
读取 100MB 文件326.87ms82.17ms0.25x305.93 MB/s1250.00 MB/s
随机读 10MB 文件 (1000 次 4KB)673.43ms5.991s8.90x5.12 MB/s0.65 MB/s
随机读 50MB 文件 (5000 次 4KB)18.373s30.155s1.64x0.94 MB/s0.64 MB/s
随机写 10MB 文件 (1000 次 4KB)664.54ms6.318s9.51x5.19 MB/s0.61 MB/s
随机写 50MB 文件 (5000 次 4KB)18.315s31.675s1.73x0.94 MB/s0.61 MB/s
向 10 个文件追加 2KB0.22ms21.73ms98.77x9.04 MB/s0.50 MB/s
创建 50 个目录16.49ms410.37ms24.89x--
列出 176 个文件1.96ms30.55ms15.59x--
获取 100 个文件元数据0.92ms36.04ms39.17x--
删除 50 个 4KB 文件1.83ms318.20ms173.88x--
删除 20 个 64KB 文件0.77ms139.22ms180.81x--
删除 2 个大文件0.85ms37.46ms44.07x--
删除 50 个 1KB 文件1.42ms317.12ms223.32x--
删除 50MB 文件4.77ms58.83ms12.33x--
删除 100MB 文件10.56ms79.39ms7.52x--
删除 50 个目录2.27ms300.25ms132.27x--

从31项基准测试的综合表现来看,AxVisor在总耗时上表现显著优于Linux,总响应时间约67.35秒,而Linux为171.28秒,整体加速比为2.54倍。在操作层面,AxVisor在29项测试中领先,仅在2项测试中落后于Linux。

从吞吐量角度,Linux略占优势,平均吞吐量为137.42 MB/s,AxVisor为119.80 MB/s。这种反向关系说明两个系统在不同的IO场景下有各自的优化重点。

小文件操作性能

创建操作

  • 1KB文件(100个):AxVisor 30.46ms vs Linux 579.76ms,加速比19.03x
  • 4KB文件(50个):AxVisor 15.10ms vs Linux 294.29ms,加速比19.49x
  • 64KB文件(20个):AxVisor 12.00ms vs Linux 195.77ms,加速比16.31x

AxVisor在小文件创建场景下保持16-19倍性能优势。Linux受VFS层复杂度、journaling机制、权限检查等多层开销影响。

读取操作

  • 1KB文件(100个):AxVisor 8.52ms vs Linux 503.91ms,加速比59.14x
  • 4KB文件(50个):AxVisor 5.88ms vs Linux 311.19ms,加速比52.92x
  • 64KB文件(20个):AxVisor 5.36ms vs Linux 138.92ms,加速比25.92x

小文件读取加速比超过创建操作,1KB文件达59倍。Linux的预读机制对碎片化小文件读取增加额外开销。

大文件操作性能

随着文件规模的增大,AxVisor的性能优势逐渐减弱:

文件大小创建加速比读取加速比写入加速比
1MB8.65x7.57x-
10MB4.42x1.22x-
50MB1.69x0.38x-
100MB1.25x0.25x-

读取性能反转

  • 50MB文件:AxVisor 149.76ms vs Linux 56.77ms
  • 100MB文件:AxVisor 326.87ms vs Linux 82.17ms

在大文件读取场景下,Linux实现3-4倍性能优势,得益于成熟的page cache管理、高效的DMA传输和顺序读优化的read-ahead算法。

随机I/O性能

随机读取

  • 10MB(1000次4KB):AxVisor 673.43ms vs Linux 5.991s,加速比8.90x
  • 50MB(5000次4KB):AxVisor 18.373s vs Linux 30.155s,加速比1.64x

随机写入

  • 10MB(1000次4KB):AxVisor 664.54ms vs Linux 6.318s,加速比9.51x
  • 50MB(5000次4KB):AxVisor 18.315s vs Linux 31.675s,加速比1.73x

AxVisor在随机I/O场景下保持明显优势,Linux的I/O调度器在处理大量随机请求时引入额外调度开销。

元数据操作性能

元数据操作是AxVisor表现最突出的领域:

操作AxVisorLinux加速比
创建50个目录16.49ms410.37ms24.89x
列出176个文件1.96ms30.55ms15.59x
获取100个文件元数据0.92ms36.04ms39.17x
删除50个4KB文件1.83ms318.20ms173.88x
删除50个目录2.27ms300.25ms132.27x

获取元数据操作达39倍加速,删除操作突破170倍。

原因:简化的权限检查机制、高效的inode/in-memory结构设计、减少的journaling开销、优化的目录项缓存策略。

顺序写入性能

小块顺序写入(4KB块):

  • 50MB:AxVisor 19.839s vs Linux 78.883s,加速比3.98x

大块顺序写入(64KB块):

  • 100MB:AxVisor 7.199s vs Linux 11.863s,加速比1.65x

AxVisor在顺序写入场景下保持优势,优势幅度与块大小呈反比。小块写入时优势来自更高效的单次I/O提交机制。

追加操作性能

向10个文件各追加2KB:AxVisor 0.22ms vs Linux 21.73ms,加速比98.77x

AxVisor在文件扩展、inode更新等环节实现路径极简,Linux的追加操作涉及复杂的journaling、锁竞争、文件锁等机制。