2. 实时系统基础:硬实时与软实时的区别,实时性指标(延迟、抖动、吞吐量)

2.1 实时系统的核心定义

实时系统(Real-Time System)的正确性不仅取决于计算结果的逻辑正确性,还取决于结果产生的时间。在 Linux 调度优化中,理解实时性的本质是配置 HZ 和调度粒度的前提。

核心公式: 实时系统正确性 = 逻辑正确结果 + 在截止时间(Deadline)前交付

2.2 硬实时(Hard Real-Time)与软实时(Soft Real-Time)

根据错过截止时间(Deadline)的后果严重程度,实时系统分为两类:

特性 硬实时(Hard RT) 软实时(Soft RT)
错过截止时间的后果 系统灾难、数据丢失、设备损坏、人员伤亡 服务质量下降、用户体验变差,但系统仍可运行
时间确定性要求 必须 100% 保证在最坏情况执行时间(WCET)内完成 允许偶尔超时,但需满足统计概率(如 99.9% 在时限内)
典型应用 飞行控制系统、汽车引擎 ECU、心脏起搏器、工业机器人 视频播放、音频处理、在线游戏、网络路由
调度策略要求 抢占式、优先级固定、可预测性优先 可接受动态优先级、尽力而为调度
Linux 支持 需配合 PREEMPT_RT 补丁 + 严格优先级调度(SCHED_FIFO/SCHED_RR) 标准内核 + CFS 调度器即可满足大部分场景
工程误区: 很多开发者认为只要使用实时调度策略(SCHED_FIFO)就能获得硬实时能力。实际上,标准 Linux 内核由于中断屏蔽、自旋锁、内存管理延迟等因素,无法提供真正的硬实时保证。硬实时需要从内核到硬件的全链路确定性设计。

2.3 实时性三大核心指标

衡量实时系统性能的三个关键指标:延迟(Latency)、抖动(Jitter)、吞吐量(Throughput)。这三者之间存在相互制约关系。

2.3.1 延迟(Latency)

延迟是指从事件发生到系统响应开始的时间间隔。在调度上下文中,主要关注:

  • 中断延迟: 硬件中断产生到 CPU 开始执行中断服务程序(ISR)的时间
  • 调度延迟: 任务就绪到被调度器选中并开始执行的时间
  • 抢占延迟: 高优先级任务就绪到低优先级任务被抢占的时间

2.3.2 抖动(Jitter)

抖动是指延迟的波动程度,即实际延迟与期望延迟之间的偏差。抖动是实时系统中最隐蔽的性能杀手。

抖动类型 定义 对实时性的影响
周期抖动 任务实际执行周期与理想周期的偏差 导致采样率不稳定、控制周期偏移
释放抖动 任务就绪到实际释放执行的时间变化 影响任务间同步精度
传输抖动 数据从源到目的地的时间变化 音视频流卡顿、网络丢包

2.3.3 吞吐量(Throughput)

吞吐量是指单位时间内系统完成的任务数量或处理的数据量。实时系统中,吞吐量通常需要在满足延迟和抖动约束的前提下进行优化。

实时性三角权衡: 降低延迟通常需要更频繁的调度检查(高 HZ),但这会增加上下文切换开销,降低吞吐量。减少抖动需要更确定性的调度行为,可能牺牲平均吞吐量。实时系统设计就是在三者之间寻找平衡点。

2.4 实时性指标关系图

下图展示了实时系统中延迟、抖动和吞吐量之间的相互作用关系:

实时性三大指标关系图 延迟 (Latency) 事件 → 响应的时间 抖动 (Jitter) 延迟的波动程度 吞吐量 (Throughput) 单位时间处理量 制约关系:降低延迟 → 增加上下文切换 → 降低吞吐量 减少抖动 → 需要确定性调度 → 可能牺牲平均吞吐量 延迟分解 中断延迟 + 调度延迟 + 抢占延迟 抖动来源 Cache Miss / TLB Miss 中断竞争 / 锁竞争 吞吐量影响因素 HZ 值 / 时间片大小 上下文切换开销

2.5 实时性指标在调度优化中的意义

在后续章节中,我们将看到 HZ 配置和调度粒度如何直接影响上述指标:

  • HZ 值越高 → 调度器检查频率越高 → 调度延迟降低 → 但上下文切换增加 → 吞吐量下降
  • 调度粒度(时间片)越小 → 抢占更及时 → 抖动降低 → 但 CPU 有效利用率下降
  • PREEMPT_RT 内核 → 通过降低内核抢占延迟来减少最坏情况延迟 → 但可能引入额外开销
关键认知: 实时系统设计不是追求极致的单项指标,而是在延迟、抖动、吞吐量之间找到满足应用需求的平衡点。理解这三者的物理含义和相互制约关系,是后续进行 HZ 配置和调度粒度优化的理论基础。