rk3568 RT-LINUX 测试

G5501 产品详情

rk3568 RT-LINUX 测试_第1张图片

主线Linux是软实时系统,加入实时补丁后将其改造为硬实时系统。RT-LINUX 特点如下:

可抢占性

实现实时内核很重要的特点是可抢占性,就绪的高优先级的任务能够抢占低优先级任务。

进程调度策略

Linux内核支持实时进程和非实时进程调度(无PREEMPT_RT补丁支持也是支持实时进程调度,只是软实时,有补丁后就是硬实时)。

对于Linux进程任务来说,Linux 内核实现了多种调度策略。它们分为非实时和实时策略。调度策略已经在主线 Linux 中实现。

非实时策略:

SCHED_OTHER:每个任务都有一个所谓的“nice值”。它是一个介于 -20(最高 nice 值)和 19(最低 nice 值)之间的值。任务执行时间的平均值取决于相关的 nice 值。SCHED_BATCH:此策略源自 SCHED_OTHER 并针对吞吐量进行了优化。SCHED_IDLE:它也是从 SCHED_OTHER 派生的,但它的值比 19 弱。

实时策略:

SCHED_FIFO:任务的优先级介于 1(低)和 99(高)之间。在此策略下运行的任务将被调度,直到它完成或更高优先级的任务抢占它。SCHED_RR:此策略源自 SCHED_FIFO。与 SCHED_FIFO 的区别在于任务在定义的时间片的持续时间内运行(如果它没有被更高优先级的任务抢占)。一旦时间片用完,它可以被具有相同优先级的任务中断。时间片定义在 procfs (/proc/sys/kernel/sched_rr_timeslice_ms) 中导出。SCHED_DEADLINE:此策略实施全局最早deadline优先 (GEDF) 算法。在此策略下调度的任务可以抢占使用 SCHED_FIFO 或 SCHED_RR 调度的任何任务。

高分辨率定时器

中断线程化自旋锁spinlock_t改为互斥锁rt_mutex,要使用自旋锁则使用raw_spinlock_t

打入PREEMPT_RT后内核抢占模型配置则会多了如下两项:

Preemptible Kernel (Basic RT):这种抢占模型类似于“抢占内核(低延迟桌面)”模型。除了上面提到的属性外,线程中断处理程序是强制的(就像使用内核命令行参数时一样threadirqs)。该模型主要用于 PREEMPT_RT 补丁实现的替代机制的测试和调试。

Fully Preemptible Kernel (Real-Time):除了少数选定的关键部分之外,所有内核代码都是可抢占的。线程中断处理程序是强制的。此外,还实现了几种替代机制,如睡眠自旋锁和 rt_mutex,以减少抢占禁用部分。此外,大的抢占禁用部分被单独的锁定结构取代。必须选择这种抢占模型以获得硬实时行为。

rk3568 RT-LINUX 测试_第2张图片

rk3568 RT-LINUX 测试_第3张图片

G5501 测试

hackbench 可用于生成系统负载,同时使用cyclictest测量延迟。

rk3568 RT-LINUX 测试_第4张图片

hackbench -l -1 -g 15 -f 25 -P 是用来制作负载的

  • -l -1: 表示hackbench将以无限循环方式运行,不会自动退出。

  • -g 15: 定义启动多少组发送者和接受者。

  • -f 25: 设置每个进程组之间的父子关系的数量为25。这决定了进程组之间的通信方式。

cyclictest -t 4 -p 99 -m -d 0

  • -t 4: 指定使用1个线程进行测试。每个线程将创建一个周期性负载。

  • -p 99: 设置线程的优先级为99,这是最高的实时优先级。使用最高优先级可以更好地测试系统的实时性能。

  • -m: 运行测试前锁定内存。这将防止测试期间的内存分页错误,并提供更一致的测试结果。

  • -d 0: 禁用延迟输出。这将阻止输出每个线程的详细延迟数据,只显示测试的总体统计信息

图片

可以  看到

T: 0 序号为0的线程    P: 0 线程优先级为0

I: 1000 时间间隔为1000微秒(us) C: 计数器。线程的时间间隔每达到一次,计数器加1。上面的图位5784673us即94分钟。

Min: 最小延时(us) 8    Act: 最近一次的延时(us) 20    Avg:平均延时(us) 22      Max:最大延时(us) 72

得出RT-Linux的实时性:

最大的延迟时间测试到为76us  平均延迟为27us

这个实时性 是 很优越的,跑ethercat 没有压力。

硬件 参数  :G5501 产品详情

你可能感兴趣的:(linux,java,rk3568,rtlinux,rk3588,am335)