内核抢占
主线Linux内核目前有三个可用的抢占设置:服务器、桌面和低延迟桌面。随着PREEMPT_RT补丁的引入,第四个选项(实时)开始可用。通过使用这些选项, 就可以将吞吐率优 先替换为延时优先 。以下根据实时性能从低到最佳排序,描述了这些选项。
- 服务器:传统的抢占模型,通过此选项,将执行内核代码,并禁用抢占以实现最大吞吐量。
- 桌面:抢占模型向内核代码中添加了显式的抢占点。此选项以较低的吞吐量,提供了更好的响应性。
- 低延迟桌面:通过使所有普通内核代码可抢占来减少延迟。此设置允许更快的响应交互式事件。
- 实时:选项实际上使整个内核可抢占,包括最关键的部分。此选项仅在应用PREEMPT_RT补丁时可用。
正如抢占选项名称所建议的那样,这些设置每个都有一个适当的用例。服务器抢占可用于吞吐量是唯一最重要指标的服务器安装中。另一方面,实时抢占应该用于嵌入式系统,其中的绝对吞吐量不是最关键的,关键的是最大经验延迟。因此,Linux中不同的抢占级别允许在不同的环境中灵活使用,也就是说,相同的操作系统可以在服务器和嵌入式系统中使用。总的来说,这种协同作用对整个生态系统都非常有益,因为为服务器系统实现的改进或修复也可以自动应用于小型嵌入式设备。
即使一些抢占设置声称减少了延迟,但在实践中,实时设置是所有实时系统的唯一可行的选项。在这种配置中,大多数自旋锁被转换为正常的睡眠锁,中断处理程序是线程化的,高分辨率计时器被用于精确计时。此外,还引入了其他一些更无关紧要的变化。有了这些改进,实际上整个内核都是完全可抢占的。只有非常低级的事件处理才能在不可抢占的环境中执行。总之,实时抢占模型显著提高了系统的响应能力,但降低了整体性能,因为每次引入的更改都会导致一些额外的负载。