2. 实时系统基础

很多人第一次接触实时系统时,会把它等同于“速度快”。这是一个典型误区。实时系统的核心不是平均速度,而是可预测性:系统能否在确定的时间范围内对外部事件作出响应。一个每秒能处理百万次请求的系统,如果偶尔出现 500ms 的卡顿,它可能比一个稳定在 2ms 内响应的慢速系统更“不实时”。理解这一点,是后续所有调优工作的前提。

一、实时性的定义

实时性(Real-Time)指系统对外部事件的响应必须满足时间约束。它包含两个要素:一是逻辑正确,即计算结果正确;二是时间正确,即结果必须在截止时间之前产生。二者缺一不可——迟到的正确结果,在实时语境下往往等同于错误结果。

实时系统通常由三部分构成:被控对象(如电机、传感器)、计算节点(运行实时任务的操作系统)、以及连接二者的信号链。系统的实时性由整条链路中最慢、最不可预测的一环决定,这就是“木桶效应”。因此调优时不能只盯着 CPU 主频,还要关注中断延迟、调度延迟、驱动处理时间等。

实时性 = 逻辑正确 + 时间正确。衡量实时系统的关键不是“多快”,而是“最坏情况下有多慢”,即最坏执行时间(WCET)与最坏响应时间(WCRT)。

二、硬实时与软实时

根据错过截止时间的后果严重程度,实时系统分为硬实时、软实时,以及介于两者之间的固实时(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 的系统更适合硬实时场景。

实时系统时间指标关系图 时间 事件发生 中断延迟 调度延迟 任务执行时间 响应完成 端到端延迟(Latency) 截止时间 余量 抖动(Jitter) 吞吐量 单位时间完成任务数 与延迟常相互制约 硬实时:错过截止时间 = 灾难性后果 软实时:错过截止时间 = 服务质量下降

四、案例:工业机械臂控制

某六轴机械臂控制系统,控制周期为 1ms,要求每个周期内完成位置采样、逆运动学计算、PWM 输出。这是一个典型的硬实时场景:如果某个周期超过 1ms,机械臂会出现位置偏差,严重时触发安全停机。

控制周期: 1000 us
采样 + 计算 + 输出预算: 700 us
安全余量: 300 us

实测数据:
  平均响应时间: 420 us
  最坏响应时间: 880 us
  抖动范围: ±60 us
  中断延迟峰值: 45 us

从数据看,平均响应时间很充裕,但最坏响应时间已接近预算上限。此时调优重点不是降低平均值,而是压缩抖动和峰值。常见手段包括:将控制任务绑定到隔离 CPU、关闭该核上的动态调频、使用 PREEMPT_RT 内核降低调度延迟、把非关键中断迁移到其他核。

在硬实时系统中,应始终以最坏响应时间(WCRT)而非平均响应时间作为验收标准。平均值漂亮但峰值超标,系统依然不可用。

五、常见误区与复盘

  • 误区一:主频越高实时性越好。高主频提升吞吐量,但缓存抖动、中断竞争、调度策略才是延迟的决定因素。
  • 误区二:平均延迟达标即可。硬实时看的是最坏情况,必须做 WCET 与 WCRT 分析。
  • 误区三:软实时系统不需要关注抖动。音视频、VR 等场景对抖动极其敏感,抖动过大会直接破坏体验。
  • 误区四:吞吐量和延迟可以同时无限优化。批处理提升吞吐量往往增加单次延迟,二者需要按业务目标权衡。
调优前必须先明确系统属于硬实时、固实时还是软实时,并确定可接受的截止时间与抖动范围。目标不清晰时,任何参数调整都可能是盲目优化。