博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接
本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。
博客内容主要围绕:
5G/6G协议讲解
算力网络讲解(云计算,边缘计算,端计算)
高级C语言讲解
Rust语言讲解
文章目录
- 一、实时性优化流程
- 1.1 BIOS参数调优
- 1.2 Preempt-RT 内核参数优化
- 1.3 操作系统环境优化
一、实时性优化流程
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 操作系统环境优化
-
将中断迁移至非实时性内核,相关命令如下:
echo 1 > /proc/irq/8/smp_affinity
其含义是将中断8,迁移至CPU0。
-
关闭不必要的service,相关命令如下:
#查看service list systemctl -t service #关闭service systemctl stop ServiceName
-
将任务绑定到某个CPU上,相关命令如下:
taskset -pac <CORE_NUM> <PID>
-
提升实时任务优先级,相关命令如下:
chrt -f -p <PID>