Linux内核默认支持实时调度

Linux 6.12将正式支持实时处理

Linux 6.12版本将正式在主线上支持实时处理,这得益于一项PR,该PR在所有支持的架构上启用了PREEMPT_RT。虽然该功能主要面向需要确定性时间保证的应用程序(如航空电子、机器人、汽车和通信),但它也可能为桌面用户体验带来改进。

PREEMPT_RT的发展与特性

自2005年以来,PREEMPT_RT作为一组补丁,为Linux实现了硬实时和软实时计算能力。它使Linux内核完全可抢占,并能在x86、x86_64、RISC-V和ARM64架构上以确定的时间和低延迟响应外部事件。

主线的整合与编译选项

尽管PREEMPT_RT已经可以单独用于修补Linux内核,但其引入主线意味着现在只需在编译时启用CONFIG_PREEMPT*选项即可构建实时Linux内核。更重要的是,整合PREEMPT_RT到主线还意味着对许多方面进行了优化,以确保其在大多数情况下运行良好。

printk函数的改进

其中一项重要的工作涉及printk函数,该函数对内核开发至关重要,但之前并未完全为实时做好准备。由Linus Torvalds开发的这个函数确保开发者能准确知道崩溃发生的位置。其旧实现引入了延迟,现已移除,从而实现了低延迟的目标。

实时Linux的运行方式

在PREEMPT_RT成为内核的一部分之前,运行实时Linux的最简单方式是使用Ubuntu Pro,该版本对个人和小规模商业用途免费,但在超过五台机器上使用时需要付费。

实时性与性能的区别

需要注意的是,实时性与性能无关,而是与任务抢占的可预测性(即确定性)有关。这对于依赖外部事件发生后在最大时间内执行操作的应用程序至关重要。普通Linux内核则优化了最大硬件利用率和公平的时间分配,但也可以配置为最小化能耗或适应特定任务需求(即利用率钳制)。

实时Linux的实际效果

根据Hacker News用户femto的说法,运行实时Linux可以将每个CPU核心的中断延迟从两位数毫秒降低到个位数毫秒。但这需要以实时策略(SCHED_FIFOSCHED_RR)运行调度程序,以防止硬件事件(如触控板触摸)干扰实时任务(如播放音频或3D游戏)。

其他用户提到,使用实时内核似乎通过避免Gnome的偶尔冻结改善了用户体验,并且可以在运行Chrome和游戏的同时合成更多乐器Mixxx音频播放器也建议启用实时调度(以及其他事项)以减少音频延迟并避免可听见的故障。

Linux 6.12的发布时间

Linux 6.12的最终版本预计将在2024年11月中旬或下旬发布,而候选版本2目前已经可供测试。

阅读 76
0 条评论