返回首页

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;

进入Linux客户OS

② 点击左下角“Zshm 通信测试”按钮;

点击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. 生命周期管理测试

在生命周期管理测试部分,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;

点击“开始测试”按钮

首先进行初始化过程,然后开始 Cyclictest四个实时性子测试项,包括基础延迟、多线程延迟、高优先级RT延迟、延迟分布测试;

最后输出四个测试项的时间数据。Cyclictest的各项指标介绍可见:https://github.com/LITMUS-RT/cyclictest

输出Log File: /tmp/cyclictest_results/cyclictest.log,代表测试完成。用户可前往该路径查看结果日志。

c)Linux FIO 测试:

在下拉框选择FIO;

点击“开始测试”按钮

首先进行初始化过程,包括创建测试文件等,然后开始FIO的存储性能测试;

最后输出读写速度,用来评估系统的存储I/O处理能力,FIO的各项指标介绍可见:https://github.com/axboe/fio

输出Log File: /tmp/benchmark_results/benchmark.log,代表测试完成。用户可前往该路径查看结果日志。

(2)Zephyr 测试

目前支持 RTOSBench, Latency_measure 两种测试集。

① 双击Guest OS交互页面的客户OS,进入对应的客户OS;

② 点击左下角 “系统性能测试” 按钮,弹出性能测试窗口;

a)Zephyr RTOSBench 测试:

下拉框选择RTOSBench;

点击“开始测试”按钮

Zephyr RTOSBench测试集,针对线程操作、互斥锁操作、信号量操作、任务主动切换、动态内存分配与释放、消息队列操作六大核心模块展开,下图红框内包括线程和互斥锁两个模块,每个模块下是该模块的各类操作。

每完成一个模块的测试,输出这个模块各类操作的耗时数据,测试完成会输出Done!,数据用来评估Zephyr RTOS内核关键操作的执行效率与实时性。RTOSBench测试集的各项指标介绍可见:https://github.com/gchamp20/RTOSBench

b)Zephyr Latency_measure 测试:

下拉框选择Latency_measure;

点击“开始测试”按钮

Zephyr RTOS延迟测试,针对上下文切换、中断服务程序(ISR)返回、线程生命周期操作、FIFO/LIFO队列操作、信号量/互斥锁基础操作等核心场景开展测试;

输出各操作的耗时,看到Latency test thread completed.,代表测试完成,用来评估Zephyr RTOS各类核心操作的延迟。Latency_measure的各项指标介绍可见https://github.com/zephyrproject-rtos/zephyr/tree/main/tests/benchmarks/latency_measure

(3)FreeRTOS 测试

目前支持RTOSBench测试集。FreeRTOS的系统性能测试的具体步骤如下:

① 双击Guest OS交互页面的客户OS,进入对应的客户OS;

② 点击左下角 “系统性能测试” 按钮,弹出性能测试窗口;

a)FreeRTOS RTOSBench测试

下拉框选择RTOSBench;

点击“开始测试”按钮

FreeRTOS基准性能测试,针对线程操作、互斥锁操作、信号量操作、任务主动切换、动态内存分配与释放;

输出耗时数据,看到Done!,代表测试完成,数据用来评估FreeRTOS内核核心操作的执行效率与实时性。RTOSBench的各项指标介绍可见::https://github.com/gchamp20/RTOSBench

6. 中断测试

VisualZVMv2.0 支持对客户 OS 的核内中断、物理硬件中断、虚拟设备中断进行测试。各客户 OS 支持情况如下表所示:

Linux Zephyr FreeRTOS Android OpenHarmony
中断测试 暂未支持 暂未支持 暂未支持

Zephyr OS 的中断测试为例:

① 双击Guest OS交互页面的客户OS,进入相应客户OS;

② 点击左下角 “中断测试” 按钮,开启测试

以Zephyr中断测试为例,测试开始后,Zephyr客户OS进入30s的测试窗口期;

在此期间,CPU内部中断测试和真实硬件中断由板卡硬件自身触发,而VisualZVMv2.0会自动输入zephyr常用指令来触发虚拟串口(虚拟外设)中断,用户也可手动输入指令来触发中断:

测试时间截至后,串口页面会打印CPU内部中断(15)、真实硬件中断(27)和虚拟设备中断(365)的统计结果,包括触发次数、最小时延、最大时延和平均时延,表示此轮中断测试成功,并可以观察中断的时延。