我给RK3588工控机打了“实时补丁”,实测强了不是一点点! “实时性就是生命线”相信兄弟们都听过类似的话毫不夸张地说在工业自动化、能源电力等领域微秒级的延迟足以引发连锁反应影响效率与安全。本文在RK3588工控机上应用了Linux-RT实时补丁系统时延实测数据见下文图1▍最大延迟仅6us本次测试使用已适配Linux-RT内核的RK3588平台在CPU空载CPU满负荷CPU满负荷 核心隔离三种情况下持续测试12小时结果如下所示图2根据以上三种状态的测试结果可知当程序指定至隔离核心上运行时能大幅降低延迟最大延迟只有6us推荐对实时性要求较高的程序指定至隔离的CPU核心运行。▍为什么选择Linux-RT标准Linux的先天短板标准Linux内核追求“公平调度”和“高吞吐”内核不可抢占、中断处理不确定导致响应延迟高、抖动大难以满足工业场景的硬实时控制要求。Linux-RT的破局之道Linux-RT(Real-Time)内核通过PREEMPT_RT补丁对内核进行深度重构从底层解决标准内核的实时性缺陷让系统响应更快速、更确定。1内核可抢占允许高优先级任务抢占低优先级任务。2中断线程化将大部分硬件中断转化为可被调度的内核线程可被更高优先级任务抢占避免中断阻塞。3精细化锁机制使用可抢占互斥锁减少任务阻塞时长提升调度灵活性。4高精度定时器提供纳秒级精度的定时与调度能力满足工业场景对时序控制的极致要求。▍系统实时性测试我们基于RK3588工控机采用Cyclictest延迟检测工具进行系统实时性测试。本次测试以隔离CPU3核心为例通过降低系统上所运行的其他进程对隔离CPU3产生的延迟影响确保CPU3进程的正常运行进而评估Linux-RT内核的系统实时性。RK3588工控机上电启动后在U-Boot倒计时结束之前长按Ctrl C进入U-Boot命令行模式执行如下命令修改环境变量隔离CPU3核心。图3运行stress压力测试工具使得CPU处于满负荷状态。图4再使用taskset工具将cyclictest测试程序运行在所有核心上测试CPU3核心满负荷状态下的实时性能测试指令运行12小时测试完成后将生成统计结果iso_overload_output文件。图5根据测试结果文件的数据得到隔离CPU核心状态下的统计结果如下所示。本次测试中CPU2核心Max Latencies值最大为184us隔离CPU3核心的Max Latencies值最小为6us。图6简单来说Linux-RT将标准内核从“不可打断的系统协调者”转变为“可被实时任务随时调度的快速执行者”兼顾Linux生态的丰富性与工业级的实时性在CPU几乎被榨干满负荷的极端情况下隔离后的CPU3核心最大延迟只有6us应用Linux-RT实时补丁后系统实时性得到了显著提升