1. 测试说明
1.1. 测试平台
操作系统:DJYOS-RT
CPU:STM32F767
主频:216Mhz
内存:512Kbytes
1.2. 测试数据说明
从测试数据中并没有显示出明显的数据随CPU占用率升高而劣化的迹象,说明DJYOS操作系统符合实时系统的要求,即使CPU负荷很高,也能满足用户苛刻的时间要求。
有许多数据显示,CPU占用率上升,数据反而更优,是有可能的,因为被测的事件占用CPU比例上升,会导致上下文切换时cache命中概率升高。
测量了实时中断、异步信号的响应时间,以及信号量、互斥量、事件弹出等行为的执行时间,包括其中引发的事件切换所需的事件。所有项目,都测量了在不同的CPU负荷下的数据。
DJYOS是事件触发和调度的操作系统,当事件被弹出后,操作系统将调度计算机资源处理事件,所谓事件切换,即计算机从处理A事件切换到处理B事件。
2. 测试项目
2.1. 中断响应速度
DJYOS的中断分两大类:实时中断和异步信号;任何一个中断源,都可以自由设置为实时中断或者异步信号。
实时中断拥有与裸机相同的响应速度,但不允许在其ISR中使用系统服务,用于实现极其苛刻的实时性需求;异步信号则几乎可以使用全部的系统服务,但响应速度会慢一些。
本项目测量的是从中断发生到执行用户的ISR第一条指令的时间间隔。
实时中断响应时间(uS):
CPU负荷 | 最小时间 | 平均时间 | 最大时间 |
10% | 0.370 | 0.419 | 0.963 |
50% | 0.370 | 0.44 | 0.972 |
99% | 0.370 | 0.45 | 1.009 |
异步信号响应时间(uS):
CPU负荷 | 最小时间 | 平均时间 | 最大时间 |
10% | 0.370 | 0.448 | 6.101 |
50% | 0.370 | 0.465 | 6.565 |
99% | 0.370 | 0.472 | 6.545 |
2.2. 中断同步速度
即由中断唤醒一个被挂起的事件,测量的是从指定的中断发生到事件恢复处理的时间间隔(uS)。
CPU负荷 | 最小时间 | 平均时间 | 最大时间 |
10% | 4.731 | 5.779 | 11.519 |
50% | 4.750 | 5.648 | 10 |
99% | 4.796 | 5.740 | 11.129 |
2.3. 释放信号量触发事件切换速度
即A事件释放信号量导致切换到阻塞中的B事件的速度,测量的是从A事件释放信号量到B事件恢复处理的时间间隔(uS)。
CPU负荷 | 最小时间 | 平均时间 | 最大时间 |
10% | 4.851 | 5.203 | 5.648 |
50% | 4.796 | 5.158 | 5.592 |
99% | 4.833 | 5.122 | 5.537 |
2.4. 请求信号量阻塞导致事件切换速度
A事件请求一个被其他事件占用的信号量,导致A事件被阻塞,从而切换到其他事件的速度(uS)。
CPU负荷 | 最小时间 | 平均时间 | 最大时间 |
10% | 5.333 | 6.149 | 6.870 |
50% | 5.351 | 5.866 | 6.703 |
99% | 5.296 | 5.671 | 6.388 |
2.5. 释放互斥量触发事件切换速度
即A事件释放互斥量导致切换到阻塞中的B事件的速度,测量的是从A事件释放信号量到B事件恢复处理的时间间隔(uS)。
CPU负荷 | 最小时间 | 平均时间 | 最大时间 |
10% | 7.481 | 8.532 | 9.222 |
50% | 7.426 | 8.168 | 9.241 |
99% | 7.388 | 7.939 | 8.962 |
2.6. 请求互斥量阻塞导致事件切换速度
A事件请求一个被其他事件占用的互斥量,导致A事件被阻塞,从而切换到其他事件的速度(uS)。
CPU负荷 | 最小时间 | 平均时间 | 最大时间 |
10% | 7.851 | 8.845 | 9.704 |
50% | 7.722 | 8.508 | 9.574 |
99% | 7.778 | 8.299 | 9.111 |
2.7. 弹出高优先级事件并切换到该事件
某事件处理过程中,弹出了比该事件优先级更高的事件,将切换到新事件
最小时间 | 平均时间 | 最大时间 | |
5.981 | 6.392 | 7.37 |
2.8. 重点函数执行速度(uS)
函数功能 | 最小时间 | 平均时间 | 最大时间 |
抛出事件 | 1 | 1.05 | 1.65 |
请求信号量 | 0.74 | 0.82 | 20.93 |
释放信号量 | 0.69 | 0.85 | 22.5 |
请求互斥量 | 1.04 | 1.13 | 21.5 |
释放互斥量 | 0.91 | 1.01 | 22.7 |