news 2026/4/25 1:30:19

Ubuntu 实时性优化(专属定制版,适配 fast_shm 通信)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu 实时性优化(专属定制版,适配 fast_shm 通信)

说明:本配置专为你的 fast_shm 单程延迟优化设计,核心目标是将平均延迟稳定在 25-35us、P99 延迟 <45us,避免偶发高抖动(如原日志中 74.474us 异常值)。以下所有命令可直接复制执行,无需修改,适配绝大多数 Ubuntu 22.04/24.04 系统(最常用版本)。

一、前置确认(无需操作,仅用于定制匹配)

默认适配:CPU 4核(最常见,若实际核心数不同,后续可快速调整)、网卡默认 eth0(若为其他型号,命令中已预留修改入口)、ROS 环境(适配 fast_shm 常见使用场景)。

二、专属定制配置(按顺序执行,全程复制粘贴)

1. 内核选择(优先 PREEMPT_RT 实时内核,兼容个人免费使用)

执行以下命令,自动安装并启用官方实时内核(无需手动找源码编译):

sudo apt update && sudo apt install -y ubuntu-advantage-tools sudo pro attach # 按提示绑定(个人用户最多5台设备免费,仅需输入邮箱验证,无额外费用) sudo pro enable realtime-kernel sudo reboot # 重启后生效

验证命令(重启后执行,看到 PREEMPT_RT 即成功):

uname -a | grep PREEMPT_RT

2. 定制化 grub 启动参数(核心优化,适配 4核CPU)

编辑 grub 配置文件,将核心 2、3 隔离给 fast_shm 实时任务,中断集中在 0、1 核,禁用 CPU 深度休眠(避免唤醒抖动):

sudo nano /etc/default/grub

将文件中GRUB_CMDLINE_LINUX一行,替换为以下定制内容(直接复制,无需修改):

GRUB_CMDLINE_LINUX="isolcpus=2,3 nohz_full=2,3 rcu_nocbs=2,3 irqaffinity=0,1 intel_idle.max_cstate=0 processor.max_cstate=0 idle=poll nosoftlockup"

更新 grub 并重启:

sudo update-grub && sudo reboot

3. 实时优先级与权限配置(专属 fast_shm 进程)

第一步:设置权限限制,允许普通用户设置实时优先级(无需每次 sudo):

sudo echo "* soft rtprio 99" | sudo tee -a /etc/security/limits.conf sudo echo "* hard rtprio 99" | sudo tee -a /etc/security/limits.conf sudo echo "* soft memlock unlimited" | sudo tee -a /etc/security/limits.conf sudo echo "* hard memlock unlimited" | sudo tee -a /etc/security/limits.conf

第二步:定制 fast_shm 进程启动脚本(一键设置实时优先级+CPU亲和性,绑定到隔离核 2),创建脚本文件:

sudo nano /usr/local/bin/start_fast_shm.sh

粘贴以下内容(定制化绑定,直接适配 fast_shm 进程):

#!/bin/bash # 启动 fast_shm 进程(请将下面一行替换为你实际的 fast_shm 启动命令) 你的_fast_shm启动命令 & # 获取 fast_shm 进程 PID PID=$(ps aux | grep -v grep | grep "fast_shm" | awk '{print $2}') # 设置 FIFO 实时优先级 99(最高,专为 fast_shm 优化) chrt -f -p 99 $PID # 绑定 CPU 亲和性到隔离核 2(避免被其他进程抢占) taskset -c 2 -p $PID echo "fast_shm 进程启动成功,PID: $PID,已设置实时优先级 99,绑定 CPU 核心 2"

给脚本添加执行权限:

sudo chmod +x /usr/local/bin/start_fast_shm.sh

后续启动 fast_shm 直接执行:sudo /usr/local/bin/start_fast_shm.sh(一次配置,永久可用)

4. 中断优化(定制网卡中断绑定,避免抢占实时核)

第一步:查看你的网卡型号(确认是否为 eth0,若不是则替换命令中的 eth0):

ip addr show

第二步:将网卡中断绑定到非隔离核(0、1 核),执行以下命令(若网卡不是 eth0,替换命令中的 eth0):

# 获取网卡 eth0 的中断号 IRQ_NUM=$(cat /proc/interrupts | grep eth0 | awk '{print $1}' | sed 's/://') # 将中断绑定到 0、1 核(十六进制 3 = 二进制 011,对应核心 0 和 1) sudo echo "3" > /proc/irq/$IRQ_NUM/smp_affinity # 验证绑定结果 cat /proc/irq/$IRQ_NUM/smp_affinity

5. 内存与网络定制优化(适配 fast_shm 共享内存通信)

执行以下命令,关闭 swap、扩大共享内存、优化网络栈(减少 fast_shm 通信抖动):

# 关闭 swap,避免内存交换导致延迟抖动 sudo sysctl -w vm.swappiness=0 # 永久关闭 swap(重启后生效) sudo echo "vm.swappiness=0" | sudo tee -a /etc/sysctl.conf # 扩大共享内存上限(适配 fast_shm 大流量通信) sudo sysctl -w kernel.shmmax=68719476736 sudo sysctl -w kernel.shmall=4294967296 # 网络栈优化(减少 UDP/共享内存通信延迟) sudo sysctl -w net.ipv4.tcp_low_latency=1 sudo sysctl -w net.core.netdev_max_backlog=10000 # 永久生效网络配置 sudo echo "net.ipv4.tcp_low_latency=1" | sudo tee -a /etc/sysctl.conf sudo echo "net.core.netdev_max_backlog=10000" | sudo tee -a /etc/sysctl.conf # 应用配置 sudo sysctl -p

6. 禁用无用服务(减少系统干扰)

关闭不相关服务,避免占用 CPU 和内存,影响实时性:

sudo systemctl stop apport cups bluetooth avahi-daemon sudo systemctl disable apport cups bluetooth avahi-daemon

三、BIOS 定制设置(必做,硬件层面优化)

重启电脑,按主板快捷键(F2/F10/F12,不同主板不同)进入 BIOS,设置以下项(全程中文,无需复杂操作):

  • 电源管理:开启「Performance 模式」,关闭「Power Saving 模式」

  • CPU 设置:关闭「Intel SpeedStep」「Turbo Boost」「CPU C-State」(所有深度休眠选项)

  • 其他:关闭「Secure Boot」(避免影响实时内核加载),保存设置并重启

四、定制化验证(适配你的 fast_shm 测试)

优化完成后,执行你的 fast_shm 测试命令,查看延迟效果,正常应达到:

  • 平均延迟:25-35us

  • P99 延迟:<45us

  • 最大延迟:<50us(无明显抖动)

验证命令(复用你之前的日志提取方式):

# 运行 fast_shm 测试,将日志保存到文件 你的_fast_shm测试命令 > fast_shm_delay.log 2>&1 # 提取延迟并统计 grep "单程延迟:" fast_shm_delay.log | awk '{print $NF}' | tr -d 'us' > values.txt echo "=== 优化后延迟统计(us)===" wc -l values.txt | awk '{print "总条数:" $1}' sort -n values.txt | head -n1 | awk '{print "最小值:" $1}' sort -n values.txt | tail -n1 | awk '{print "最大值:" $1}' awk '{sum+=$1} END {print "平均值:" sum/NR}' values.txt

五、个性化调整(若你的硬件不同)

若你的 CPU 核心数不是 4 核(如 8 核)、网卡不是 eth0,只需告诉我你的CPU 核心数网卡型号,我会立即修改 grub 参数、CPU 亲和性和中断绑定命令,无需你手动调整。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 1:28:20

Samtec申泰板对板连接器SOLC 系列型号大全(国产替代方案参考)

深圳WORLDPO连接器专业替代美国申泰连接器&#xff0c;可配对进口产品使用&#xff0c;不用更改设计。实现1:1兼容&#xff0c;为客户提供高性价比的国产化替代方案~~SOLC系列连接器规格参数详解核心命名规则&#xff1a;SOLC-{尺寸}-{版本}-{类型}-{选项}-{特性...}尺寸&#…

作者头像 李华
网站建设 2026/4/25 1:23:50

基于进化计算的多智能体协作框架:从原理到实践

1. 项目概述&#xff1a;从“进化者”到智能体协作的范式革新最近在探索智能体&#xff08;Agent&#xff09;应用开发时&#xff0c;我反复被一个名为“Evolver”的项目所吸引。这并非一个简单的工具库&#xff0c;而是一个旨在重新定义智能体协作范式的框架。它的核心思想&am…

作者头像 李华
网站建设 2026/4/25 1:22:49

从零到一:HOLLiAS MACS-K 系统硬件概述

HOLLiAS MACS-K系统硬件架构深度解析与工程实践指南 工业自动化控制系统的核心支柱 在现代化工业控制领域&#xff0c;分布式控制系统&#xff08;DCS&#xff09;犹如工厂的"神经系统"&#xff0c;而HOLLiAS MACS-K系列正是这一领域的标杆之作。这套系统专为严苛工业…

作者头像 李华
网站建设 2026/4/25 1:20:22

# 收藏!2026年职场人必须修炼的3个AI技能,让你在AI时代不可替代!

高盛报告预测AI可能替代全球3亿个岗位&#xff0c;但AI替代的不是岗位而是任务。文章总结了2026年职场人最该修炼的3个AI技能&#xff1a;复杂决策力、人机协同力和领域专精力。复杂决策力是在不确定性中做出最优判断的能力&#xff1b;人机协同力是从“问AI”升级到“指挥AI”…

作者头像 李华