系统与软件 · D4
实时系统与 PREEMPT_RT
这是机器人软件里最值钱的一块认知:实时不是「快」,是「确定」。能拿出抖动数据的人极少。
要学什么
- 确定性的度量:抖动、最大延迟、WCET,以及为什么平均值没有意义
- PREEMPT_RT 三个关键机制:睡眠自旋锁、优先级继承、中断线程化
- 调优四件套:isolcpus/nohz_full/rcu_nocbs 隔离、SCHED_FIFO、mlockall、关深度 C-state 与调频
- 测量方法:cyclictest 三组对照(普通内核 / PREEMPT_RT / 加隔离),配合 stress-ng 施压
四条路线需要多深
算法知道
系统软件精通
嵌入式电控精通
机械结构不需要
「精通」= 能从零推导 / 能手写实现 / 能判断别人的方案对不对;「用过」= 能调起来、能改参数;「知道」= 能听懂、能提问。
怎么算学会了
能在一台 ARM 板上跑出三组 cyclictest 数据,能解释每组差异的原因,能判断「这台机器撑不撑得住 1kHz」。
常见错误
- 只换内核不做隔离,测出来的抖动和普通内核差不多,于是得出「补丁没用」的错误结论
- 汇报平均值,不给 P99 和最大值,实际问题一直定位不到