preempt_rt的缺点(s)

目标硬件平台的功率有限,并且/或者您希望实时工作将尽可能小的开销投入到您的系统中。 这是双内核通常比本地抢占系统更好的地方。

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

Preempt_rt抢占整个Linux。 抢占Linux在系统上加载的方式是什么?

那里的常见问题与Xenomai相比,谈到了抢先。

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从一个进程/线程切换到另一个进程。 上下文切换只能在内核模式下进行。 这是保存进程的当前执行状态(以便稍后恢复执行)的过程,并加载新进程/线程的保存状态以供执行。

或者,您可以查看此演示文稿: http : //www.slideshare.net/jserv/realtime-linux了解更多描述。 它涵盖了实时系统的一般概念,Linux内核如何工作抢占,Linux中的延迟,PREEMPT_RT和Xenomai,作为双核方法的实时扩展。