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