1.1 实时性能¶
1.1.1 测试目的¶
为了评估基于OEE、OEE-RT 以及 OEE-RT + Jailhouse的系统在某些场景下的性能表现及性能差异。 例如它们的中断响应的实时延迟、周期调度的抖动、以及信号在多个线程间传递的延迟等。
1.1.2 测试条件¶
OEE, OEE+RT以及OEE+RT+Jailhouse
RK3568 开发板
在RK3568的开发板上分别部署OEE, OEE-RT 以及OEE+RT+Jailhouse。
1.1.3 中断响应实时延迟¶
测试工具¶
信号发生器
GD32单片机开发板
测试方案¶
使用信号发生器作为中断源,产生1kHz方波,接入结果统计平台(本方案使用GD32单片机开发板),记时作为中断触发时间。
同时接入RK3568硬件平台外部中断引脚,触发中断并在OEE-RT的中断处理程序中对RK3568的GPIO引脚进行电平翻转,并将该引脚接入结果统计平台,结果统计平台记时作为中断响应时间。
结果统计平台(GD32单片机开发板)得到中断响应时间与中断触发时间后,计算之间差值即得到中断响应延迟。
本方案使用信号发生器,其可提供稳定且精确的方波信号,便于测试和验证,并且信号发生器能保证每次实验条件一致,有助于获得可靠的测试结果
图1-1 硬件连接示意图¶
测试结果¶
对两个操作系统平台分别测试五千万次,得到统计结果如下:
测试对象  | 
统计次数  | 
最大时延/us  | 
≥10us占比  | 
备注  | 
OEE  | 
50000000  | 
24.2  | 
0.0090%  | 
≥10us占比十万分之9  | 
OEE-RT  | 
50000000  | 
10  | 
0.000004%  | 
≥10us占比亿分之4  | 
OEE-RT+Jailhouse  | 
50000000  | 
13  | 
0.00000118%  | 
≥10us占比小于百万分之二  | 
测试结果分析¶
OEE在中断响应延迟上最大可达24.2us,并且≥10us占比十万分之9。 OEE-RT在这方面性能提升明显。
OEE-RT+Jailhouse平台小于10us的占比99.99978%。
加入Jailhouse虚拟化后,平台的中断响应延迟比不加的时候多3us,但总延迟小于20us。
测试结论¶
在中断响应延迟上,OEE-RT相较于OEE有很大的性能提升。
加入Jailhouse虚拟化后,中断响应总延迟小于20us,可以满足大部分场景的实时需求。
1.1.4 周期调度抖动¶
测试工具¶
stress
Kit
cyclictest
测试方案¶
本轮测试采用cyclictest套件工具。Jailhouse只有root cell,分配一个核。
执行如下指令运行stress给系统加压:
stress --cpu 4 --io 2 --vm 2 --vm-bytes 512M --hdd 2 --hdd -bytes 512M执行如下指令运行cyclictest:
taskset -c 2 cyclictest -i 1000 -p 99 -t 1 --policy=fifo -h 100 -D 12h > /dev/console &
测试结果¶
经过12小时测试,统计结果如下:
测试工具  | 
测试对象  | 
统计次数  | 
最大抖动/us  | 
≥70us占比  | 
cyclictest  | 
OEE-RT+Jailhouse  | 
43199998  | 
105  | 
0.0000833%  | 
OEE-RT  | 
43199992  | 
188  | 
0.0002894%  | 
|
OEE  | 
43200000  | 
726  | 
9.5059652%  | 
注:cyclictest记录的数据为用户态线程。
测试结果分析¶
根据表1-2:
OEE 在本测试中,抖动≥70us的占比超过9.5%,实时性能较差。OEE-RT相较与OEE,实时性能有很大提升。
OEE-RT+Jailhouse平台小于100us的占比均在99.9%范围内。
cyclictest测试中,添加Jailhouse后OEE-RT的最大抖动为105us,比不加Jailhouse的时候少了83us,提升44.15%。
测试结论¶
OEE在不加RT的情况下,实时性能较差。相较于OEE, OEE-RT的实时性能提升很大。
OEE-RT+Jailhouse平台在添加Jailhouse虚拟化后对OEE-RT的实时性有很大提升,说明Jailhouse的资源隔离对OEE-RT的实时性有很大帮助。
1.1.5 信号在多个线程间传递的延迟¶
测试工具¶
signaltest
测试方案¶
使用rt-tests的signaltest工具获取信号发送和接收的时间差值。
设置测试线程优先级为最高的99(多线程的话会依次降低),循环测试一千万次,测试线程数为4,测试指令:
taskset -c 2 signaltest -l 1000000 -p 99 -t 4指令均在串口终端下执行。
测试结果¶
统计结果如下:
测试工具  | 
测试项  | 
OEE  | 
OEE-RT  | 
OEE-RT+Jailhouse  | 
|
signaltest  | 
线程1(优先级99)  | 
最小值(us)  | 
75  | 
70  | 
97  | 
平均值(us)  | 
91  | 
74  | 
100  | 
||
最大值(us)  | 
411  | 
144  | 
146  | 
||
线程2(优先级99)  | 
最小值(us)  | 
75  | 
70  | 
97  | 
|
平均值(us)  | 
719  | 
700  | 
727  | 
||
最大值(us)  | 
10584  | 
10156  | 
10186  | 
||
线程3(优先级99)  | 
最小值(us)  | 
75  | 
70  | 
96  | 
|
平均值(us)  | 
719  | 
700  | 
727  | 
||
最大值(us)  | 
10598  | 
10167  | 
10189  | 
||
线程4(优先级99)  | 
最小值(us)  | 
74  | 
70  | 
96  | 
|
平均值(us)  | 
719  | 
700  | 
727  | 
||
最大值(us)  | 
10610  | 
10179  | 
10192  | 
测试结果分析¶
根据表1-3:
OEE-RT在优先级最高的线程1的最大延迟时间为144us,比OEE的411us有很大提升。
OEE-RT+Jailhouse在多个线程对信号的传递延迟上,均大于OEE-RT。
添加Jailhouse的情况下,优先级最高的线程1的最大延迟时间达到146us,与OEE-RT的144us相差很小。
测试结论¶
OEE-RT在多个线程间传递时延上,性能比OEE要好。
添加Jailhouse虚拟化后,OEE-RT上的信号延迟性能虽然变差,但整体都在可接受范围内。
1.1.6 信号在两个线程间传递的延迟¶
测试工具¶
sigwaittest
测试方案¶
使用rt-tests的sigwaittest测量在两个线程间传递的时延。
设置测试线程优先级为最高的99(多线程的话会依次降低),循环测试一千万次,测试线程对数为2,测试指令:
taskset -c 2 sigwaittest -l 1000000 -p 99 -t 2指令均在串口终端下执行。
测试结果¶
统计结果如下:
测试工具  | 
测试项  | 
OEE  | 
OEE-RT  | 
OEE-RT+Jailhouse  | 
|
sigwaittest  | 
线程1(优先级99)  | 
最小值(us)  | 
19  | 
18  | 
25  | 
平均值(us)  | 
26  | 
20  | 
27  | 
||
最大值(us)  | 
172  | 
69  | 
69  | 
||
线程2(优先级99)  | 
最小值(us)  | 
19  | 
18  | 
25  | 
|
平均值(us)  | 
28  | 
20  | 
27  | 
||
最大值(us)  | 
256  | 
103  | 
148  | 
测试结果分析¶
从表的数据上看,OEE-RT在最大延迟上相比OEE有非常大的提升,两个线程分别从172us提升到69us和从256us提升到103us。
OEE-RT在添加Jailhouse后,总体上性能变差,在最高优先级的线程1上,只在信号的最大延迟上与OEE-RT保持了性能的持平(69us)。
测试结论¶
当信号在两个线程间传递时,在信号的传递延迟上,OEE-RT比OEE各项指标都有提升,特别是在最大延迟上提升明显。
OEE-RT在添加Jailhouse后,总体上性能变差,但在最大延迟上还是要优于OEE。
1.1.7 信号量PV操作的延迟¶
测试工具¶
sigwaittest
测试方案¶
使用rt-tests的sigwaittest测量信号量PV操作的时延。
设置测试线程优先级为最高的99(多线程的话会依次降低),循环测试一千万次,测试线程对数量为2,测试指令:
taskset -c 2 svsematest -l 1000000 -p 99 -t 2指令均在串口终端下执行。
测试结果¶
统计结果如下:
测试工具  | 
测试项  | 
OEE  | 
OEE-RT  | 
OEE-RT+Jailhouse  | 
|
svsematest  | 
线程1(优先级99)  | 
最小值(us)  | 
12  | 
11  | 
16  | 
平均值(us)  | 
14  | 
13  | 
18  | 
||
最大值(us)  | 
218  | 
47  | 
48  | 
||
线程2(优先级99)  | 
最小值(us)  | 
12  | 
11  | 
16  | 
|
平均值(us)  | 
14  | 
13  | 
18  | 
||
最大值(us)  | 
112  | 
105  | 
99  | 
测试结果分析¶
在信号量PV操作的延迟上,OEE-RT和OEE 在最小延迟时间和平均延迟时间上性能差别不大,但是线程1的最大延迟时间可达218us,OEE-RT 是47us。
OEE-RT在添加Jailhouse的情况下,信号量PV操作的延迟性能变差。但是其最小值和平均值都可以控制在20us之内。
测试结论¶
总体而言,OEE-RT在信号量PV操作的延迟上有更好的性能。
OEE-RT在添加Jailhouse的情况下,信号量PV操作的延迟性能变差。
1.1.8 互斥锁获取的延迟¶
测试工具¶
ptsematest
测试方案¶
使用rt-tests的ptsematest测量互斥锁解锁前和上锁后的时延。
设置测试线程优先级为最高的99(多线程的话会依次降低),循环测试20分钟(最高优先级线程运行次数约一千一百万次),测试线程对数为2,测试指令:
taskset -c 2 ptsematest -D 20m -p 99 -t 2指令均在串口终端下执行。
测试结果¶
在本轮测试中,发现在20分钟的测试结束时,测试程序ptsematest由于释放互斥锁会带来,统计结果如下:
测试工具  | 
测试项  | 
OEE  | 
OEE-RT  | 
OEE-RT+Jailhouse  | 
|
ptsematest  | 
线程1(优先级99)  | 
最小值(us)  | 
12  | 
11  | 
16  | 
平均值(us)  | 
18  | 
12  | 
17  | 
||
最大值(us)  | 
196  | 
47  | 
48  | 
||
线程2(优先级99)  | 
最小值(us)  | 
11  | 
11  | 
15  | 
|
平均值(us)  | 
13  | 
13  | 
22  | 
||
最大值(us)  | 
167  | 
80  | 
87  | 
测试结果分析¶
互斥锁获取的延迟上,OEE-RT和OEE在最小延迟时间和平均延迟时间上均在20us以内,且两者差别不大。
在最大延迟时间上,OEE-RT从OEE的196us降为47us,性能优化明显。说明OEE-RT在互斥锁获取的延迟时间上波动更小。
OEE-RT在添加Jailhouse的情况下,在互斥锁获取延迟上,绝对时间下降均在约10us以内。
测试结论¶
在互斥锁获取的延迟上,OEE-RT和OEE在最小延迟时间和平均延迟时间上差别不大。
在最大延迟时间上,OEE-RT相比OEE性能提升明显,在互斥锁获取的延迟时间上波动更小。
OEE-RT在添加Jailhouse的情况下,在互斥锁获取延迟上,性能有所下降。