【问题标题】:Disadvantage(s) of preempt_rt [closed]preempt_rt 的缺点[关闭]
【发布时间】:2012-04-20 00:23:33
【问题描述】:

目标硬件平台的马力有限,和/或您想要 实时工作,以尽可能减少您的开销 系统。这就是双内核通常比原生内核更好的地方 抢占系统。

从这里:http://www.xenomai.org/index.php/Xenomai:Roadmap#Xenomai_3_FAQ

Preempt_rt 确实抢占了整个 Linux。抢占 Linux 以何种方式给系统增加负载?

那里的常见问题解答讨论了 preempt_rt 与 Xenomai 的比较。

【问题讨论】:

  • 或者,您可以查看此演示文稿:slideshare.net/jserv/realtime-linux 以获得更长的说明。它涵盖了有关实时系统的一般概念、Linux 内核如何进行抢占、Linux 中的延迟、PREEMPT_RT 和 Xenomai,作为双内核方法的实时扩展。

标签: linux operating-system real-time xenomai preempt-rt


【解决方案1】:

CONFIG_PREEMPT_VOLUNTARY -
此选项引入了对内核代码中导致长时间延迟的最常见原因的检查,以便内核可以自愿将控制权交给等待执行的更高优先级的任务。据说这个选项在很大程度上减少了长延迟的发生,但它仍然不能完全消除它们。

CONFIG_PREEMPT_RT -
此选项导致自旋锁保护区域(由 raw_spinlock_t 创建)之外的所有内核代码有资格被更高优先级的内核线程非自愿抢占。由 spinlock_t 和 rwlock_t 创建的自旋锁和中断也可以在启用此选项的情况下被抢占。使用此选项,最坏情况下的延迟降至(大约)个位数毫秒。

缺点 -
普通的 Linux 内核仅在执行用户空间代码时才允许更高优先级的任务抢占任务。

为了减少延迟,CONFIG_PREEMPT_RT 补丁强制内核在更高优先级的内核任务到达时非自愿地抢占手头的任务。这势必会导致系统的整体吞吐量降低因为会有多个上下文切换,而且较低优先级的任务也不会有太多机会通过

来源: https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions


所用技术术语的描述

什么是延迟
从计算机系统发出需求到开始响应同一需求之间所经过的时间称为延迟或响应时间。
各种延迟:

  • 中断延​​迟
    从产生中断到开始执行相应的中断处理程序之间经过的时间。
    示例:当硬件设备执行任务时,它会产生中断。此中断包含有关要执行的任务和要执行的中断处理程序的信息。然后中断处理程序执行特定任务。
  • 调度延迟
    它是从发出事件发生的唤醒信号到内核调度程序有机会调度等待唤醒发生的线程(响应)之间的时间。调度延迟也称为调度延迟。
  • 最坏情况延迟
    从计算机系统发出需求到开始响应同一需求之间的最长时间。

什么是吞吐量
计算机在给定时间段内可以完成的工作量称为吞吐量。

什么是上下文切换
上下文切换是 CPU 从一个进程/线程切换到另一个。上下文切换只能在内核模式下发生。这是保存进程当前执行状态的过程(用于稍后恢复执行),并加载新进程/线程的保存状态以执行。

【讨论】:

  • 此答案中描述为“CONFIG_PREEMPT_RT”的选项与源 URL 中给出的“CONFIG_PREEMPT”描述相匹配。事实上,我在常见问题解答中读到“如果实时 Linux 应用程序需要小于个位数毫秒的延迟,强烈建议使用 CONFIG_PREEMPT_RT 补丁。”
【解决方案2】:

在最高投票答案中添加“优先级较低的任务不会有太多机会通过”

这就是重点(尽管在 4 核以上的系统上,这些低优先级任务仍然可以运行,只要它们被禁止做会干扰关键任务的事情 - 这就是重要的地方确保所有连接的外围设备在运行关键线程的应用程序想要访问它们时不会阻塞)。关键位(例如,如果考虑开发一个有用的系统来及时处理外部输入或测试与实时数据而不是模型的数据转换行为),是有一种方法告诉内核时间关键输入来自哪里.

电流问题,例如。 Windows 系统是你可能是一个“严肃的游戏玩家或严肃的音乐家”,会注意到诸如 150 微秒的抖动之类的事情。如果您无法指定键盘、鼠标或其他人机界面设备应被视为关键优先级,那么所有类型的“Windows 更新”等都可能出现并执行它们的操作,这反过来可能会触发 USB 中的某些活动控制器的优先级高于与执行输入相关的线程。

我读到一个案例,通过添加第二个 USB 控制器来解决音频故障,除了输入设备之外什么都没有。在便携式设置中,您实际上需要 Thunderbolt PCIe 直通来添加专用集线器(或 fpga),该集线器可以与驱动程序一起覆盖系统上的所有其他内容。这就是为什么市场上没有多少 USB 产品能够为音乐家提供足够好的性能的原因。 (2 毫秒往返延迟,全天最大抖动 150 微秒,无丢包)

【讨论】:

    猜你喜欢
    • 2011-01-02
    • 2010-10-06
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    相关资源
    最近更新 更多