Linux 实时补丁 PREEMPT_RT 已并入内核主线 | 编译安装测试

注:本文为 “Linux PREEMPT_RT” 相关文章合辑

未整理去重。


历经 20 年,实时 Linux 正式并入内核主线~

Steven V N 最后一个 bug 2024 年 09 月 20 日 19:32 广东

多年来,在实时 Linux 上所做的工作使开源操作系统受益匪浅,但直到本周,Linus Torvalds 才将其最后一部分纳入主流内核。到底是什么花了这么长时间?

  ~  
图片

高级实时 Linux 开发人员 Steven Rosedt 和 Steven Vaughan Nichols 在维也纳举行的 Linux 欧洲峰会上合影 —sjvn/ZDNET

维也纳 ——20 年后,实时 Linux(PREEMPT_RT)终于 —— 终于 —— 进入了主流内核。Linus Torvalds 在欧洲开源峰会上为代码祈福。为什么这是一件大事?让我们从解释实时操作系统(RTOS)是什么以及它有什么好处开始。

1. RTOS

RTOS 是一种专门的操作系统,旨在精确可靠地处理时间关键任务。与 Windows 或 macOS 等通用操作系统不同,RTOS 的构建是为了在严格的时间限制内响应事件和处理数据,通常以毫秒或微秒为单位。正如著名的实时 Linux 开发人员和谷歌工程师 Steven Rosedt 所说,“实时是最快的最坏情况(Real-time is the fastest worst-case scenario.)。”

他的意思是 RTOS 的本质特征是它的确定性行为。RTOS 保证关键任务将在指定的截止日期内完成。许多人认为 RTOS 是用于快速流程的。他们不是。速度不是 RTOS 的重点,可靠性才是。这种可预测性在计时至关重要的应用中至关重要,如工业控制系统、医疗设备和航空航天设备。

目前使用的实时操作系统的一个例子是 VxWorks,它被用于美国国家航空航天局的火星探测车,以引导它们,并被用于波音 787 梦想飞机,以控制航空电子系统,确保飞行控制的实时响应性。另一个例子是 QNX Neutrino,它广泛应用于汽车的信息娱乐和高级驾驶员辅助系统,如防抱死制动器。

2. 实时 Linux 的历史

从即将推出的 Linux 6.12 内核开始,所有发行版都将包含实时 Linux 代码。这意味着 Linux 将很快开始运行在更多的任务关键设备和工业硬件上。这标志着它经历了很长时间的发展才走到今天这一步。

实时 Linux 的故事始于 20 世纪 90 年代末,当时对 Linux 支持实时应用程序的需求日益增长。最初的工作重点是创建与 Linux 内核一起运行的独立实时内核。这包括堪萨斯大学的 KURT 等学术项目;来自米兰大学 RTAI;以及新墨西哥矿业与技术学院的 RTLinux。

Linux 内核高级开发人员 Ingo Molnar 于 2004 年开始收集和重塑这些技术,为实时抢占补丁集 PREEMPT_RT 奠定基础。

这种方法与早期的实时 Linux 解决方案不同,因为它修改了现有的 Linux 内核,而不是创建一个单独的实时内核。到 2006 年,它已经获得了足够的吸引力,Linus Torvalds 观察到,“用 Linux 控制激光器是疯狂的,但这个房间里的每个人都以自己的方式疯狂。所以如果你想用 Linux 来控制工业焊接激光器,我不反对你使用 PREEMPT_RT。”

到 2009 年,包括 Thomas Gleixner、Peter Ziljstra 和 Rosedt 在内的一个内核开发小组已经完成了将之前的原型开发整合到一个单独的树外补丁集中的工作。就在那时,许多公司开始使用这个补丁集来构建需要毫秒精度的硬实时特性的工业系统。

随着项目的推进,它的许多元素都转移到了内核中。Rosedt 告诉我,在某种程度上,说实时性现在才出现在 Linux 中是错误的。多年来,它的许多功能已被引入主流 Linux。事实上,其中一些对于你每天使用的 Linux 来说是必不可少的。

例如,您可能从未听说过 “NO_HZ”,它可以降低空闲系统的功耗。NO_HZ 使 Linux 能够在具有数千个 CPU 的机器上高效运行。Rostedt 强调:“你没有意识到 Linux 因为实时补丁而得到了多大的改进。”。“Linux 今天在数据中心运行的唯一原因是我们所做的工作。”

因此,如果没有 NO_HZ,Linux 就不会在所有的数据中心中运行。这反过来解释了为什么 Linux 运行云端。我不知道如果没有这种实时贡献,世界会是什么样子,但它肯定不会像今天这样。

实时 Linux 也以一开始无人想到的方式被证明是有用的。Rostedt 回忆道:“早在 2005 年,我收到了一个实时 bug 报告,我发送了一个补丁并说,‘嘿,这是修复程序。你能应用它吗?” 那家伙说,‘我不知道我在做什么。’我回答说,‘等等,你不是内核开发者吗?’他回答说:‘我是个吉他手。’“

原来他使用的是早期的实时补丁,因为他使用的是 JACK,一种用于低延迟音频连接的声音服务器。他使用它是因为,像大多数音乐家一样,他太穷了,买不起高端设备,所以,Rostedt 继续说,“他买了一台便宜的笔记本电脑,装了 Linux 和 JACK,因为有了实时补丁,它就能很好地录音,而不是在写入硬盘时跳过。”

事实证明,许多音乐家都是早期的实时 Linux 用户,因为它可以让他们以低廉的价格制作高质量的录音。谁知道呢?这些年来进入主流内核的其他实时 Linux 特性包括:

  1. 互斥锁的引入
  2. Ftrace,可以说是最重要的 Linux 调试工具
  3. 用户空间应用程序的优先级继承

3. 为什么实时 Linux 花了这么长时间?

那么,为什么实时 Linux 现在只在内核中得到完全的支持呢?Rostedt 解释说:” 事实上,除非我们认为它已经准备好了,否则我们不会把它推上去。“” 几乎所有内容在进入主流之前都要重写至少三次,因为我们对内容的要求太高了。“

此外,通往主线的道路不仅仅是技术挑战。政治和认知也发挥了作用。Rostedt 回忆道:“一开始,我们甚至不能提到实时。每个人都说,‘哦,我们不在乎实时性。’”

另一个问题是钱。多年来,实时 Linux 的资金一直不稳定。2015 年,Linux 基金会建立了实时 Linux (RTL) 协作项目,以协调围绕 PREEMPT_RT 主线的工作。

完全集成的最后一个障碍是重新编写内核的 print_k 函数,这是一个可以追溯到 1991 年的关键调试工具。Torvalds 特别保护 printk —— 他编写了原始代码,并仍将其用于调试。然而,每当调用 printk 时,它也会在 Linux 程序中产生硬延迟。这种减速在实时系统中是不可接受的。

Rosedt 解释说:“printk 有一千种技巧来处理一千种不同的情况。每当我们修改 printk 时,它都会破坏其中一种情况。printk 调试的好处在于,你可以精确地知道进程崩溃时的位置。当我非常努力地测试系统时,延迟通常在 30 微秒左右,然后突然增加到 5 毫秒。” 这种延迟正是 printk 消息造成的。

经过大量的工作、多次激烈的讨论和几项被拒绝的提案,今年早些时候终于达成了妥协。Torvalds 很高兴,实时 Linux 开发人员也很高兴,printk 用户同样感到满意。最终,实时 Linux 成为了现实。

经过二十年的发展,Linux 实时补丁终于被合并到主流内核中。这一里程碑标志着内核开发人员多年来为 Linux 带来确定性、低延迟性能的工作达到了顶峰。

有了这一补丁,Linux 内核实现了完全可抢占,这使它能够在微秒内对事件做出响应。这种能力对于需要精确计时的应用至关重要,例如工业控制系统、机器人和音频制作。

随着实时补丁的合并,Linux 现在有望成为实时操作系统(RTOS)领域的重要参与者。这不仅是实时制造商的胜利,也是所有 Linux 用户的胜利。

原文:


Linux 实时补丁(PREEMPT_RT)的“前世今生”

Ubuntu 实时内核应用了树外 PREEMPT_RT 补丁的 Linux 内核构建,专门为 x86_64 和 AArch64 硬件提供。Canonical 希望通过它进一步支持 Ubuntu 在电信 / 5G 设备和其他具有低延迟要求的工业系统中的使用,为关键基础设施提供性能、有保证的超低延迟和安全性。这个新内核还服务于工业自动化和机器人技术中对延迟敏感的用例。

Linux 实时补丁 (PREEMPT_RT) 已经推出多年,并已进入内核主线。去年英特尔收购 Linutronix 后成为 PREEMPT_RT 补丁集背后的开发商,而 Ubuntu 实时内核的打包工作正是与英特尔合作完成的 —— 毕竟两者存在共同利益,可确保构建在英特尔平台上运行良好。


深入实时 Linux

作者: Eric Brown 译者: LCTT geekpi | 2017-07-18 12:52

实时 Linux 在过去十年中已经走了很长的路。Linutronix 的 Jan Altenberg 提供了对该主题做了概述,并在 ELC Europe 的视频中提供了新的 RTL 性能基准。

实时 Linux(RTL)是一种启用 PREEMPT_RT 的主线 Linux,在过去十年中已经走了很长的路。大约 80% 的确定性的 PREEMPT_RT 补丁现在可用于主线内核本身。然而,Linux 上单内核 RTL 的最强大的替代品——双内核 Xenomai——继续声称在减少延迟上有巨大的优势。在 2016 年 10 月的 欧洲嵌入式 Linux 会议的演讲中,Jan Altenberg 反驳了这些声明,同时对实时主题做了论述。

德国嵌入式开发公司 Linutronix 的 Altenberg 并不否认 Xenomai 和 RTAI 等双核方法提供较低的延迟。然而,他揭示了新的 Linutronix 基准,旨在表明差异不如所声称的那样大,特别是在实际使用中。争议较少的是,他认为 RTL 更易于开发和维护。

在我们深入永恒的 Xenomai 与 RTL 的辩论之前,请注意,2015 年 10 月,开源自动化开发实验室(OSADL)将 RTL 项目的控制权转移给了管理 Linux.com 的 Linux 基金会。此外,Linutronix 是 RTL 项目的主要贡献者,并承担了 x86 的维护者。

RTL 的进步是过去十年中 Linux 从实时操作系统(RTOS)中获得市场占有率的几个原因之一。实时操作系统在微控制器上比应用处理器上更频繁出现,并且在缺乏高级用户级操作系统(如 Linux)的单用途设备上实现实时很简单。

Altenberg 通过清除关于实时确定性的内核方案的一些常见的误解开始他的演讲。Altenberg 告诉他的 ELCE 观众:“实时不是快速执行,这基本上是决定论和定时保证。实时为你提供保证某些内容将在给定的时间内执行。你不想要尽可能快,但是要尽快指定。”

在给定的执行时间内的迟缓的反应会导致严重后果,特别是当它可能导致人们受到伤害时,开发人员往往会使用实时的方式。这就是为什么实时性仍然在很大程度上受到工厂自动化行业的推动,并且越来越多地出现在汽车、火车和飞机上。然而,并不总是生死攸关的情况 - 金融服务公司使用 RTL 进行高频交易。

Altenberg 说:“实时需求包括确定性的定时行为、抢占、优先级继承和优先级上限。最重要的要求是高优先级任务总是需要能够抢占低优先级的任务。”

Altenberg 强烈建议不要使用术语“软实时”来描述轻量级实时解决方案。“你可以是确定性的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值