前言
OK113i-S开发板上测试实时linux系统的效果 Linux下的实时系统有三种方案:这三种方案各有优缺点 1.PREEMPT-RT:PREEMPT-RT是一个基于Linux内核的实时补丁,也被称为Real-Time(RT)补丁。它通过增加内核的可抢占性,使得Linux内核能够实现实时性能。PREEMPT-RT补丁提供了可配置的实时选项,可以根据应用程序的需求进行调整。这个版本跟内核的版本匹配很细致,几乎每一个内核的小版本都有配套的补丁。 2.Xenomai:Xenomai提供了一个实时框架,为Linux操作系统添加了实时性能。它支持具有硬实时和软实时要求的应用程序,并通过分时多任务和抢占式调度来提供可预测性。
这个系统就版本变化比较多,4之前是pipe,5后面是Dovetail,而且与内核版本匹配不太紧密, 3.RTAI(Real-Time Application Interface):RTAI是一个开源实时应用程序接口,提供了类似API的接口和实时任务调度。它在Linux内核上运行,并通过插入抢占式调度器来实现实时性能。 这里我们测试一下PREEMPT-RT的效果。 编译desktop系统 首先我们编译一个desktop的系统版本,官方提供的镜像是默认的PREEMPT-RT的。
默认配置如下 我们选择Desktop,
选择Desktop,然后退出保存。 Cp ~/OK113i-linux-sdk/kernel/linux-5.4/arch/arm/configs/OK113I_linux_defconfig ok-defCp .config ~/OK113i-linux-sdk/kernel/linux-5.4/arch/arm/configs/OK113I_linux_defconfig~/OK113i-linux-sdk/build.sh kernel编译测试程序 为了测试对比效果,我们还需要编译一个测试程序rt-test 进入OK113i-linux-sdk/buildroot/buildroot-201902make menuconfig ARCH=arm选择 Target packages Debugging,profileing and benchmark然后OK113i-linux-sdk/buildroot/buildroot-201902/build.sh最后 ~/OK113i-linux-sdk/build.sh packCp ~/OK113i-linux-sdk/out/t113_i_linux_ok113i_uart0.img t113-desk.img测试效果 我们测试两个系统镜像,一个是desktop版本t113-desk.img,
一个是PREEMPT-RT版本,下面是运行的测试结果 我们这里就比较几个简单的命令coremark,和cyclictest
cyclictest -t 5 -p 80 ,5个任务跑80个进程,计算时间 ==============
Desktop root@ok113i:/#uname -aLinux ok113i 5.4.61 #3 SMP Mon Dec 18 14:42:10 CST 2023 armv7l GNU/Linuxroot@ok113i:/# /usr/bin/coremark2K performance run parameters for coremark.CoreMark Size : 666Total ticks : 17257Total time (secs): 17.257000Iterations/Sec : 3476.849974Iterations : 60000Compiler version : GCC7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701]Compiler flags : -O2 -lrtMemory location : Please put data memory location here (e.g. code in flash, data on heap etc)seedcrc : 0xe9f5[0]crclist : 0xe714[0]crcmatrix : 0x1fd7[0]crcstate : 0x8e3a[0]crcfinal : 0xbd59Correct operation validated. See readme.txt for run and reporting rules.CoreMark 1.0 : 3476.849974 / GCC7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701] -O2 -lrt / Heaproot@ok113i:/# cyclictest -t 5 -p 80 //5个任务跑80个进程,计算时间# /dev/cpu_dma_latency set to 0uspolicy: fifo: loadavg: 1.09 0.80 0.38 2/70 1575policy: fifo: loadavg: 1.17 0.82 0.39 1/68 1576T: 0 ( 1517) P:80 I:1000 C: 9393 Min: 10 Act: 20 Avg: 15 Max: 152T: 0 ( 1517) P:80 I:1000 C: 11554 Min: 10 Act: 11 Avg: 15 Max: 754T: 1 ( 1518) P:80 I:1500 C: 7702 Min: 10 Act: 11 Avg: 14 Max: 140T: 2 ( 1519) P:80 I:2000 C: 5773 Min: 10 Act: 11 Avg: 16 Max: 4850T: 3 ( 1520) P:80 I:2500 C: 4619 Min: 10 Act: 12 Avg: 17 Max: 5174T: 4 ( 1521) P:80 I:3000 C: 3850 Min: 10 Act: 11 Avg: 16 Max: 4726 Disable gpadc0policy: fifo: loadavg: 1.06 0.85 0.43 1/72 1634===========
PREEMPT-RT root@ok113i:/# coremark2K performance run parameters for coremark.CoreMark Size : 666Total ticks : 17200Total time (secs): 17.200000Iterations/Sec : 3488.372093Iterations : 60000Compiler version : GCC7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701]Compiler flags : -O2 -lrtMemory location : Please put data memory location here (e.g. code in flash, data on heap etc)seedcrc : 0xe9f5[0]crclist : 0xe714[0]crcmatrix : 0x1fd7[0]crcstate : 0x8e3a[0]crcfinal : 0xbd59Correct operation validated. See readme.txt for run and reporting rules.CoreMark 1.0 : 3488.372093 / GCC7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701] -O2 -lrt / Heaproot@ok113i:/# cyclictest -t 5 -p 80 //5个任务跑80个进程,计算时间# /dev/cpu_dma_latency set to 0uspolicy: fifo: loadavg: 1.00 0.67 0.30 1/79 1651T: 0 ( 1647) P:80 I:1000 C: 85352 Min: 13 Act: 16 Avg: 16 Max: 57T: 1 ( 1648) P:80 I:1500 C: 56901 Min: 13 Act: 16 Avg: 15 Max: 74T: 2 ( 1649) P:80 I:2000 C: 42671 Min: 13 Act: 16 Avg: 15 Max: 39T: 3 ( 1650) P:80 I:2500 C: 34136 Min: 13 Act: 20 Avg: 16 Max: 51T: 4 ( 1651) P:80 I:3000 C: 28447 Min: 13 Act: 16 Avg: 16 Max: 80========= 可以看到 Total time相差不大,但是 cyclictest 的Max时间是大大减少的。 可看到Linux-RT内核与普通Linux内核相比,系统延时更加稳定,平均延时、最大延时更低,系统实时性更佳 PREEMPT-RT和xenomai 在buildroot里面,大家可以选择xenomai系统进行选择,对比效果 这两个的测试结果就不太明显,因为我们的软件没有严格限制,这里就不详细介绍了。感兴趣的可以学习相关内容。
|