2. 实时系统基础
很多人第一次接触实时系统时,会把它等同于“速度快”。这是一个典型误区。实时系统的核心不是平均速度,而是可预测性:系统能否在确定的时间范围内对外部事件作出响应。一个每秒能处理百万次请求的系统,如果偶尔出现 500ms 的卡顿,它可能比一个稳定在 2ms 内响应的慢速系统更“不实时”。理解这一点,是后续所有调优工作的前提。
一、实时性的定义
实时性(Real-Time)指系统对外部事件的响应必须满足时间约束。它包含两个要素:一是逻辑正确,即计算结果正确;二是时间正确,即结果必须在截止时间之前产生。二者缺一不可——迟到的正确结果,在实时语境下往往等同于错误结果。
实时系统通常由三部分构成:被控对象(如电机、传感器)、计算节点(运行实时任务的操作系统)、以及连接二者的信号链。系统的实时性由整条链路中最慢、最不可预测的一环决定,这就是“木桶效应”。因此调优时不能只盯着 CPU 主频,还要关注中断延迟、调度延迟、驱动处理时间等。
二、硬实时与软实时
根据错过截止时间的后果严重程度,实时系统分为硬实时、软实时,以及介于两者之间的固实时(Firm Real-Time)。
- 硬实时(Hard Real-Time):错过截止时间会造成灾难性后果,如安全气囊点火、飞行控制、心脏起搏器。系统必须保证在最坏情况下也能满足截止时间,通常需要形式化验证与 WCET 分析。
- 固实时(Firm Real-Time):偶尔错过截止时间结果失效,但不会造成严重后果,如视频帧解码,丢一帧只是画面卡顿。
- 软实时(Soft Real-Time):错过截止时间只降低服务质量,如音视频播放、在线游戏、交互界面。系统追求统计意义上的及时性。
区分硬软实时的关键,不是任务周期长短,而是违约代价。一个 1ms 周期的任务如果错过截止时间只是日志延迟,它仍是软实时;一个 1s 周期的任务如果错过会导致设备损坏,它就是硬实时。
三、关键指标:截止时间、抖动、延迟、吞吐量
描述实时系统性能,需要一组量化指标。它们之间往往存在权衡关系,理解其含义才能正确设定调优目标。
| 指标 | 含义 | 典型关注点 |
|---|---|---|
| 截止时间(Deadline) | 任务必须完成的最晚时刻 | 相对截止时间、绝对截止时间 |
| 延迟(Latency) | 事件发生到响应完成的时间 | 中断延迟、调度延迟、端到端延迟 |
| 抖动(Jitter) | 响应时间的波动范围 | 周期任务的实际周期偏差 |
| 吞吐量(Throughput) | 单位时间完成的任务数量 | 与延迟常相互制约 |
| 最坏响应时间(WCRT) | 所有情况下最长响应时间 | 硬实时系统的核心验证指标 |
延迟可以细分为多个阶段:中断延迟(硬件中断产生到 ISR 开始执行)、调度延迟(ISR 结束到任务被调度)、执行时间(任务实际运行)。抖动则反映这些延迟的稳定性。一个平均延迟 1ms、抖动 ±0.1ms 的系统,通常比平均延迟 0.5ms、抖动 ±5ms 的系统更适合硬实时场景。
四、案例:工业机械臂控制
某六轴机械臂控制系统,控制周期为 1ms,要求每个周期内完成位置采样、逆运动学计算、PWM 输出。这是一个典型的硬实时场景:如果某个周期超过 1ms,机械臂会出现位置偏差,严重时触发安全停机。
控制周期: 1000 us
采样 + 计算 + 输出预算: 700 us
安全余量: 300 us
实测数据:
平均响应时间: 420 us
最坏响应时间: 880 us
抖动范围: ±60 us
中断延迟峰值: 45 us
从数据看,平均响应时间很充裕,但最坏响应时间已接近预算上限。此时调优重点不是降低平均值,而是压缩抖动和峰值。常见手段包括:将控制任务绑定到隔离 CPU、关闭该核上的动态调频、使用 PREEMPT_RT 内核降低调度延迟、把非关键中断迁移到其他核。
五、常见误区与复盘
- 误区一:主频越高实时性越好。高主频提升吞吐量,但缓存抖动、中断竞争、调度策略才是延迟的决定因素。
- 误区二:平均延迟达标即可。硬实时看的是最坏情况,必须做 WCET 与 WCRT 分析。
- 误区三:软实时系统不需要关注抖动。音视频、VR 等场景对抖动极其敏感,抖动过大会直接破坏体验。
- 误区四:吞吐量和延迟可以同时无限优化。批处理提升吞吐量往往增加单次延迟,二者需要按业务目标权衡。