实时Linux内核补丁与调试指南
1. 实时内核补丁概述
支持硬实时功能并不包含在主线 kernel.org 源代码树中。若要启用硬实时功能,必须应用一个补丁。实时内核补丁是多项旨在降低 Linux 内核延迟的计划的累积成果。该补丁有众多贡献者,目前由 Ingo Molnar 维护,你可以在 http://people.redhat.com/~mingo/realtime-preempt 找到它。
自 2.6 内核早期版本发布以来,2.6 Linux 内核的软实时性能有了显著提升。2.6 内核首次发布时,2.4 Linux 内核在软实时性能方面明显更优。但从大约 Linux 2.6.12 版本开始,在性能不错的 x86 处理器上,实现个位数毫秒级的软实时性能变得轻而易举。若要获得更稳定的性能,则需要应用实时补丁。
实时补丁为 Linux 内核增添了几个重要特性,其中包括新增了一种名为 PREEMPT_RT(即抢占式实时)的抢占模式,一共有四种抢占模式,具体如下:
| 抢占模式 | 描述 | 适用场景 |
| — | — | — |
| PREEMPT_NONE | 无强制抢占。总体延迟平均表现良好,但偶尔会出现较长延迟。 | 以整体吞吐量为首要设计标准的应用程序。 |
| PREEMPT_VOLUNTARY | 降低延迟的第一阶段。在内核的关键位置添加额外的显式抢占点以减少延迟。 | 为降低延迟可牺牲一定整体吞吐量的场景。 |
| PREEMPT_DESKTOP | 除在关键部分处理时,内核各处均可进行抢占。 | 音频和多媒体等软实时应用。 |
| PREEMPT_RT | 添加了实时补丁的特性,包括用可抢占的互斥锁替代