打印
[嵌入式linux]

迅为RK3588开发板实时系统-提高实时方法

[复制链接]
96|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
遥寄山川|  楼主 | 2025-3-24 14:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为了提高实时性,我们可以采用以下的方式
方法一: 抑制串口终端打印,输入以下以下命令:
echo 1 > /proc/sys/kernel/printk
方法二:禁止内存过度使用,输入以下命令:
echo 2 > /proc/sys/vm/overcommit_memory
/proc/sys/vm/overcommit_memory内核参数接受三种取值。
0 - 意思是内核利用某种算法猜测内存申请是否合理,如果认为不合理就会拒绝
1- 意思是对于内存申请来者不拒,使用这个设置会增加内存超载的可能性
2- 意思是内存拒绝等于或者大于总可用交换内存
方法三:使用轻量级窗口管理器代替桌面或者不使用桌面
我们建议使用轻量级窗口管理器代替桌面或者使用不带桌面的系统,这样可以有效降低
系统的CPU负担,并提高系统的响应速度。相比与传统的桌面环境,轻量级窗口管理器通常
具有更少的特效和图形处理要求,因此可以减小CPU的延迟。
方法四: 绑定核心
绑定核心就是设定某个线程或进程与某个CPU核的亲和力。设定以后,Linux调度器就会让
这个线程或者进程只在所绑定的核上面去运行,但并不是这个进程或线程独占这个CPU核,
其他进程和线程还是可以在这个核上面运行的。如果想要实现某个进程或线程独占某个核,
需要使用cpuset命令去实现。
实时rt应用可以由特定的核心进行处理,比如说我们将rt_test应用绑定到cpu2,输入以下
命令:
taskset -c 2 rt_test
taskset是一个可以将某进程任务指定到某个CPU上运行的命令,命令格式如下所示:
语法格式:taskset [options] -p [mask] pid
参数选项:
-a, --all-tasks 操作所有的任务线程
-p, --pid 操作已存在的pid
-c, --cpu-list 通过列表显示方式设置CPU(逗号相隔)
-V, --version 输出版本信息
为了优化系统性能和分散负载,对于ARM64架构的系统,在系统启动时,所有的外设中断通常是由CPU0处理。然而,对于关键的中断,可以在系统启动之后将它们绑定到其他核心上。举个例子,可以将eth0(以太网接口)的中断绑定到CPU3上。可以通过以下步骤来实现

查看中断号为86的中断的CPU亲和性列表。输入以下命令:
cat /proc/irq/86/smp_affinity_list



将中断号为86的中断的CPU亲和性设置为3,输入以下命令:
echo 3 > /proc/irq/86/smp_affinity_list
cat /proc/irq/86/smp_affinity_list
cat /proc/interrupts | grep eth0



方法五: 使用smp+amp方案
目前支持多核处理器的实时操作系统体系结构有俩种。一种是对称多处理SMP构架,一种是非对称多处理AMP构架。
AMP模式是在各个CPU核心上均运行一个操作系统(操作系统不一定完全相同),各个操作系统拥有自己专有的内存,相互之间通过访问受限的共享内存进行通信。而SMP模式由一个操作系统实例控制所有CPU核心,所有CPU核心共享内存和外设资源。相对比AMP模式,SMP模式的操作系统具有可共享内存,较高的性能和功耗比,以及易实现负载均衡等优点,更能发挥多核处理器的硬件优势。

使用特权

评论回复

相关帖子

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

本版积分规则

417

主题

424

帖子

2

粉丝