打印
[ARM入门]

延时仅33us,Linux-RT实时性能测试分享—基于瑞芯微RK3562J国产平台

[复制链接]
3256|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Tronlong创龙|  楼主 | 2024-8-22 11:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文主要介绍瑞芯微RK3562J的实时性测试,开发环境如下:
U-Boot:U-Boot-2017.09
Kernel:Linux-RT-5.10.198
LinuxSDK:
LinuxSDK-[版本号]
(基于RK3562_LINUX_SDK_RELEASE_V1.1.0_20231220)

RK3562J实时性测试数据
本文使用Cyclictest延迟检测工具测试Linux系统实时性,分别在CPU空载、满负荷(运行stress压力测试工具)、满负载-隔离CPU3核心(运行stress压力测试工具)三种情况下运行指令测试12小时。

图 1  RK3562J实时性测试数据

根据3种状态的测试结果可知,当程序指定至隔离的CPU3核心上运行时,Linux系统延迟最低,可有效提高系统实时性。故推荐对实时性要求较高的程序(功能)指定至隔离的CPU核心运行。

RK3562J典型应用领域

图 2


Cyclictest系统实时性测试
本文通过创龙科技TL3562-EVM工业评估板(基于RK3562J)的硬件平台进行演示。为了简化描述,本文仅摘录部分方案功能描述与测试结果,详细产品资料请扫描文末二维码下载。
本次测试以隔离CPU3核心为例,通过降低系统上所运行的其他进程对隔离CPU3产生的延迟影响,确保CPU3进程的正常运行,进而评估Linux-RT内核的系统实时性。
评估板上电启动后,在U-Boot倒计时结束之前按下空格键进入U-Boot命令行模式,执行如下命令,修改环境变量,隔离CPU3核心。
U-Boot#setenv bootargs storagemedia=sd androidboot.storagemedia=sd androidboot.mode=normal isolcpus=3
U-Boot#saveenv
U-Boot#reset

图 3

评估板重启后,执行如下命令,查看环境变量。
Target#cat /proc/cmdline

图 4

进入评估板文件系统,执行如下命令,修改内核printk日志等级,避免内核打印信息影响实时测试。
Target#echo 1 > /proc/sys/kernel/printk
调整内存分配策略为“2”,禁用内存过度使用。避免出现OOM(Out-of-Memory) Killer攻击某些进程而产生延迟,影响测试结果。
Target#echo 2 > /proc/sys/vm/overcommit_memory

图5

执行如下命令,运行stress压力测试工具,使得CPU处于满负荷状态。再使用taskset工具将Cyclictest测试程序运行在CPU3核心,测试CPU3核心满负荷状态下的系统实时性能。测试指令需运行12小时,请保持评估板长时间稳定工作,测试完成后将生成统计结果iso_overload_output文件。
Target#stress-ng --cpu 4 --cpu-method=all --io 4 --vm 4 --vm-bytes 64M --timeout 43200s &
Target#taskset -c 0-3 cyclictest -m -Sp99 -i1000 -h800 -D12h -q > iso_overload_output

图 6

对测试结果文件的数据进行分析,使用脚本生成直方图,得到隔离CPU核心状态下的统计结果如下所示。本次测试中,CPU1核心Max Latencies值最大,为244us,隔离CPU3核心的Max Latencies值最小,为33us。

图7


表 1



使用特权

评论回复

相关帖子

沙发
yangjiaxu| | 2024-8-31 20:03 | 只看该作者
这个3562一般是什么场景使用?而且它可以替代3288么?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

317

主题

325

帖子

4

粉丝