ZVM特性:自动化测试系统
VisualZVMv2.0 测试模块
ZVM-RK3588v2.0具备多项关键核心特性。为验证这些核心特性的功能完整性与可用性,并确保用户能够高效、便捷地完成相关验证工作,VisualZVMv2.0提供了一套完整且可直接使用的测试模块,支持用户对所选核心特性进行一键化测试。目前,VisualZVM已集成VirtIO、Zshm、vCPU、生命周期管理、系统性能测试及中断测试等功能模块,具体内容如表所示。
| 测试项 | ZVM | Linux | Zephyr | FreeRTOS | Android | OpenHarmony |
|---|---|---|---|---|---|---|
| VirtIO | 暂未支持 | 暂未支持 | ||||
| Zshm | ||||||
| vCPU | -- | -- | -- | -- | -- | |
| 生命周期管理 | -- | -- | -- | -- | -- | |
| 系统性能 | -- | 暂未支持 | 暂未支持 | |||
| 中断测试 | 暂未支持 | 暂未支持 | 暂未支持 | 暂未支持 |
1. VirtIO 测试
在ViriIO测试部分,VisualZVMv2.0支持VirtIO-blk和VirtIO-net测试,具体支持情况如下表所示:
| Linux | Zephyr | FreeRTOS | Android | OpenHarmony | |
|---|---|---|---|---|---|
| VirtIO-blk | 暂未支持 | 暂未支持 | |||
| VirtIO-net | 暂未支持 | 暂未支持 |
(1) VirtIO-blk测试
以Linux的VirtIO-blk测试为例(Android、OpenHarmony测试流程类似):
① 进入Guest OS交互页面,双击Guest OS列表中的Linux客户OS(linux_os-0(5.10));
② 点击左侧栏下方的VirtIO-blk测试按钮,一键进行VirtIO-blk测试;
测试过程中,首先对VirtIO-blk块设备vda执行多轮“挂载→文件读写→卸载”重复测试,验证VirtIO-blk的功能稳定性,具体现象如下图所示:
当所有测试轮次均成功完成后,如下图所示,日志显示:
完成基础功能测试后,开始文件读写吞吞性能测试。测试脚本在VirtIO-blk文件系统中创建指定大小的测试文件,并持续向该文件写入连续数据,以模拟连续文件写入场景。
测试结果显示,文件I/O吞吐速度约为5.82MB/s,表明VirtIO-blk设备在当前环境下运行稳定,相关功能与性能测试均顺利完成。
(2) VirtIO-net测试
以Linux的VirtIO-net测试为例(Android、OpenHarmony测试流程类似):
① 进入Guest OS交互页面,双击Guest OS列表中的Linux客户OS(linux_os-0(5.10));
② 点击左侧栏下方的VirtIO-net测试按钮,一键进行VirtIO-net测试;
在测试开始前,测试脚本自动完成虚拟网卡的IP与MAC地址配置,并输出当前VirtIO-net设备(eth0)的源IP地址以及测试目标的目的IP地址。如下图所示:
当网络参数配置完成后,客户OS向目标IP地址连续发送100次ICMP请求。
测试结束后,日志中输出ping测试的统计结果,包括最小、最大及平均往返时延(RTT)。
2. Zshm 测试
在 Zshm 测试部分,VisualZVMv2.0 支持共享内存通信测试,其在客户 OS 的支持情况如下表:
| Linux | Zephyr | FreeRTOS | Android | OpenHarmony | |
|---|---|---|---|---|---|
| Zshm |
以一台 Linux 分别与一台 Zephyr 和一台 FreeRTOS 之间进行 Zshm 测试为例,具体测试步骤如下:
① 双击 Guest OS 交互页面的 Linux 客户 OS,进入 Linux 客户 OS;
② 点击左下角“Zshm 通信测试”按钮;
③ 在弹窗中心的下拉框中依次勾选想要测试的客户 OS;
④ 点击 【开始测试】 按钮,进行测试。
在测试配置弹窗中选择客户 OS 作为测试对象后,发起测试的客户 OS 以每秒一条的频率向所有测试对象发送测试消息。
在展示一定数量的测试消息后,VisualZVMv2.0 会依次自动切换至各测试对象对应的客户 OS 界面,用于展示测试消息的接收情况。
功能测试完成后,VisualZVMv2.0 将自动切换回发起测试的客户 OS,并触发性能测试流程,对所选客户 OS 逐一进行一对一性能测试,最终输出通信时延的最小值、最大值、均值及标准差等统计结果。下图为跨 Linux 通信的测试结果:
3. vCPU 测试
在 vCPU 测试部分,VisualZVMv2.0 支持测试 vCPU 到 pCPU 的映射关系,以及 vCPU 的调度时间片信息;本测试为 ZVM 测试项,只在 ZVM Hypervisor 界面进行测试。
① 双击 Guest OS 交互页面的 ZVM Hypervisor,进入 ZVM;
② 点击左下角 【vCPU映射测试】 按钮,一键开启测试;
ZVM 的 shell 页面将依次展示映射关系。映射关系以表格形式展示:第一列为 pCPU 编号,第二列为对应的 vCPU 编号及其所属的客户 OS。
当启用 ZVM 的“一虚多”特性时,系统将输出调度时间片统计信息;ZVM-RK3588v2.0 发行版默认不启用一虚多,输出如下:
4. 生命周期 management 测试
在生命周期管理测试部分,VisualZVMv2.0 支持测试客户 OS 的创建、开启、删除等命令操作。本测试为 ZVM 测试项,只在 ZVM Hypervisor 界面进行测试。
① 双击 Guest OS 交互页面的 ZVM Hypervisor,进入 ZVM 交互界面;
② 点击左下角 “生命周期管理测试” 按钮,开启测试。
ZVM 首先会随机生成一系列测试指令,包括对客户 OS 的创建、开启、暂停、删除等操作:
- •
zvm create -t linux -c 1 -m 512:创建一个单核、内存为 512M 的 Linux 客户 OS - •
zvm run/pause/delete -n 0:对客户 OS 0 进行开启/暂停/删除操作
随后,ZVM 会依次执行测试指令,每通过一条指令输出 [PASS] 信息。测试结束后显示 [PASS] All test passed,表示生命周期管理测试成功,ZVM 和客户 OS 稳定运行。
5. 系统性能测试
VisualZVMv2.0 支持对多种客户 OS 的系统吞吐量和实时性进行测试,各客户 OS 支持的测试集如下表:
| 客户 OS | 支持性能测试集 |
|---|---|
| Linux | Unixbench, Cyclictest, FIO |
| Zephyr | RTOSBench, Latency_measure |
| FreeRTOS | RTOSBench |
(1)Linux 测试
目前支持 Unixbench, Cyclictest, FIO 三种测试集。操作步骤如下:
① 双击 Guest OS 交互页面的客户 OS,进入对应的 Linux 环境;
② 点击左下角 “系统性能测试” 按钮,弹出性能测试窗口;
a)Linux Unixbench 测试:
在下拉框选择Unixbench;
点击“开始测试”
系统首先进行环境检查、网络配置、系统信息收集等初始化过程,然后开始UnixBench的7个子测试项;
最后输出UnixBench的7个子测试项的测试结果,用来评估整数运算、浮点运算、进程/系统调用、上下文切换、文件I/O等核心性能。最终输出各项性能指标,UnixBench的各项指标介绍可见:https://github.com/kdlucas/byte-unixbench
输出Log File: /tmp/benchmark_results/benchmark.log,代表测试完成。用户可前往该路径查看结果日志。
b)Linux Cyclictest 测试:
在下拉框选择Cyclictest;