Aqu*_*irl 13 linux operating-system real-time xenomai preempt-rt
目标硬件平台具有有限的马力,和/或您希望实时作业将最小的开销放在系统上.这是双内核通常比本机抢占系统更好的地方.
从这里:http://www.xenomai.org/index.php/Xenomai : Roadmap#Xenomai_3_FAQ
Preempt_rt确实抢占了整个Linux.以何种方式抢占Linux会对系统造成负担?
与Xenomai相比,FAQ中讨论了preempt_rt.
Aqu*_*irl 18
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
所用技术术语的描述:
什么是延迟?
在计算机系统上发出的请求和对相同需求的响应的开始之间的时间被称为延迟或响应时间.
各种延迟:
什么是吞吐量?
计算机在给定时间段内可以完成的工作量称为吞吐量.
什么是Context Switch?
上下文切换是CPU从一个进程/线程切换到另一个进程/线程.上下文切换只能在内核模式下进行.这是保存进程的当前执行状态(稍后继续执行)以及加载新进程/线程的已保存状态以供执行的过程.