如果有实时内核,为什么还要使用普通内核?

如果有实时内核,为什么还要使用普通内核?

普通 Ubuntu 内核与实时内核相比有哪些优势?实时内核的缺点是什么?

答案1

扩展这个答案,两者之间存在着普遍的权衡吞吐量潜伏(或者响应能力)。吞吐量是指单位时间内可以完成的工作量;延迟是指开始新工作之前需要等待的时间。

由于从一个任务切换到另一个任务会产生开销(您需要重新加载旧任务的状态、刷新缓存等),吞吐量尽可能少地切换任务可以最大化地提高效率。另一方面,潜伏通过在任务之间快速切换来最小化延迟,因此单个任务无需等待很长时间才能再次运行。因此,实时内核中延迟的改善将以峰值吞吐量下降为代价。

除了吞吐量/延迟权​​衡之外,还有其他因素需要考虑;实时内核还不是主线,因此没有进行太多测试,并且实时内核将消耗更多电量(因为它会更积极地唤醒处理器)。

答案2

实时内核可以保证进程有一定的响应时间。例如,进程必须每 10ms 从控制系统读取一次值。实时情况下,您可以确保不会丢失任何值。

如果您不操作某种制造控制系统,您根本就不需要它。

如果内核不必保证每个进程在一个周期内都有一个时间片,那么整个系统的性能可能会更好。(更好的 I/O 利用率、更低的进程切换开销等等)

总结一下:实时不会增加系统的吞吐量。

答案3

运行实时内核的主要问题是它会带来严重的安全问题。RT 进程有可能完全接管一台机器。

还有其他不运行 RT 的原因,其中包括:

  1. 自 Linux 2.6 以来,实时堆栈已经成为 Linux 内核的一部分,使用实时堆栈修补内核不再是必要的。

  2. Preempt-RT 在默认的 Ubuntu 内核配置中启用,以实现音频和其他应用程序的最低延迟,同时保持用户界面可用。

  3. 它可能会降低你的机器速度。

有关该问题的更多信息和探讨如下:

https://help.ubuntu.com/community/UbuntuStudio/RealTimeKernel

https://sevencapitalsins.wordpress.com/2007/08/10/low-latency-kernel-wtf

相关内容