【实时性】实时性优化的一些参数设置和心得

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接

本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。


博客内容主要围绕:
       5G/6G协议讲解
       算力网络讲解(云计算,边缘计算,端计算)
       高级C语言讲解
       Rust语言讲解



一、实时性优化流程

BIOS
实时操作系统内核
Linux实时性
应用

1.1 BIOS参数调优

BIOS优化主要是为了避免系统进入低功耗模式,相关的设置如下表:

BIOS选项 修改后的值 含义说明
Boot performance mode Max Non-turbo Performance 可以使CPU运行在固定的始终频率下面,从而提供更稳定、更可预测的结果
Intel SpeedStep disable 是一个动态电源管理技术,也是一种节能技术,在禁用的情况下,CPU会按照最高频率和电压运行,避免CPU降频对实时性的影响
Intel Speed Shift Technology disable 是一种动态调整CPU频率和电压的技术,目的是提供更快的响应时间和更高的性能效率,可以根据负载的变化动态调整CPU频率和电压,对于实时性来说,开启后会引入更多不确定性
C-States disable CPU节能技术,运行在CPU空闲或者低负载的情况下,降低功耗
Gfs RC6 disable 一种Intel的节能技术,可以降低图形核心的电源消耗,从而减少整个系统的功耗。如果在实时性操作中需要使用到图形,可以将这个功能禁用
GPU Frequency 300MHZ 是图形处理器的工作频率,在实时操作系统中,这个频率过高会影响系统响应时间的不确定性和抖动。
Intel VMX disable 虚拟化技术,对于实时系统来说关闭虚拟化配置可以避免资源抢占,从而优化实时系统的性能
VT-d disable 虚拟化技术,对于实时系统来说关闭虚拟化配置可以避免资源抢占,从而优化实时系统的性能
PCI Express Clock Gating disable 关闭PCIe的时钟,降低系统开销
DMI Link ASPM Control disable 控制计算机主板上DMI电源的管理技术,达到节能降温效果
SATA Aggressive LPM Support disable 一种SATA硬件设备电源管理技术,通过降低设备在空闲时的电源消耗,达到节能和降温的效果。为了保证SATA技术在实时任务中的活跃状态,我们将其关闭
ACPI Sleep State Suspend Disabled 一种电源管理技术,用于控制计算机在空闲时进入休眠状态,以节约电源和延长硬件寿命
Native ASPM disable 也是一种电源管理技术,这里也关闭,避免设备进入休眠状态
PCH Cross Throttling disable 用于控制系统中多个设备共享PCIe根节点时的分配分配,当多个设备同时向根节点发送数据的时候,PCH Cross Throttling可以通过降低每个设备的带宽,来保证整体带宽的均衡分配,避免任何一个设备的带宽占用过度。
SA GV Fixed High 在Intel处理器中将System Agent的电压固定在一个高水平上,SA控制Intel处理器中的处理器内存、控制器和IO,设置为Fixed High有助于提升内存处理器的性能和稳定性,避免低压对实时性产生的影响
DVMT pre-Allocated 64M 用于在启动时为显存预先分配一定的内存空间,以提升显卡的性能和稳定性,如果配置的过高,会导致系统内存资源不足,从而导致实时任务拿到的内存资源不足,影响实时任务
Enable Hibernation disable 关闭休眠模式
USB Legacy Support disable 关闭对旧USB系统的支持,如果实时任务中没有用到,则可以关闭来减少资源浪费
HD Audio disable 这是一个用于提供高质量的数字音频体验,如果实时任务中没有用到,则可以关闭减少带宽和处理器资源的浪费
ACPI D3Cold Support disable 是一种将整个系统进入一种低功耗状态的技术,降低能源消耗和设备寿命
Low Power S0 idle Capability disable 也是一种低功耗的技术,直接关闭
Page Close idle Timeout disable 是内核中用于节能的一种机制,当系统空闲时,关闭不使用的页面,从而节省能源并提高系统启动时的性能。这个机制需要定期扫描页面,关闭不使用的页面,所以会占用系统资源

1.2 Preempt-RT 内核参数优化

在编译内核时的参数配置,如下表:

参数设置 含义说明
CONFIG_PREEMPT_RT=Y 开启preempt-rt
CONFIG_PREEMPT_RCU=Y 启动可抢占的RCU
CONFIG_RCU_NOCB_CPU=Y 开启这个选项之后,可以选择某些CPU不参与RCU CB,例如,rcu_nocbs=X-Y
CONFIG_GENERIC_IRQ_MIGRATION=Y 启动中断迁移机制,可以动态分配处理中断的处理器,例如,irqaffinity=X-Y,将中断绑定到X-Y CPU上
CONFIG_CPU_ISOLATION=Y 开启CPU隔离技术,避免内核调度器将任务调度到某些CPU中,例如,isolcpus=X-Y
CONFIG_CPU_FREQ=N 关闭CPU频率调节,例如,cpufreq.off=1

1.3 操作系统环境优化

  1. 将中断迁移至非实时性内核,相关命令如下:

    echo 1 > /proc/irq/8/smp_affinity
    

    其含义是将中断8,迁移至CPU0。
    在这里插入图片描述

  2. 关闭不必要的service,相关命令如下:

    #查看service list
    systemctl -t service
    
    #关闭service
    systemctl stop ServiceName
    
  3. 将任务绑定到某个CPU上,相关命令如下:

    taskset -pac <CORE_NUM> <PID>
    
  4. 提升实时任务优先级,相关命令如下:

    chrt -f -p <PID>
    


在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_31985307/article/details/130791459