为什么选择低延迟内核而不是通用或实时内核?

安装Ubuntu Studio 12.04后,我发现它使用了低延迟内核。 我搜索了为什么以及如何改回实时或通用的。 但看起来这部分Linux还没有被覆盖太多。

问:为什么选择低延迟内核而不是通用或实时内核?

PS:我已经阅读了这个问题和这篇文章的答案。

这些是一些简单的指南,可帮助您了解哪些内核以及您应该测试哪种顺序以适合您的用例。

  • 如果您的系统不需要低延迟,请使用-generic内核。
  • 如果您需要低延迟系统(例如,用于录制音频),请使用-preempt内核作为首选。 这样可以减少延迟,但不会牺牲省电function。 它仅适用于64位系统(也称为amd64)。
  • 如果-preempt内核没有为您的需求提供足够的低延迟(或者您有32位系统),那么您应该尝试使用-lowlatency内核。
  • 如果-lowlatency内核不够,那么你应该尝试-rt内核
  • 如果-rt内核不够稳定,那么你应该尝试-realtime内核

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

我想这取决于你将如何处理你的工作室发行版。 对于一些用户来说,通用只会做得很好,而对于其他用户则不行。

FREEDOM SPEECH,请尝试阅读此链接: http : //sevencapitalsins.wordpress.com/2007/08/10/low-latency-kernel-wtf/

我是由ubuntu粉丝链接的博客post的作者: http : //sevencapitalsins.wordpress.com/2007/08/10/low-latency-kernel-wtf/

那篇博文并没有提出任何事实,它只是理论 。 它的工作方式实际上是:处理器更频繁地“停止”以查看是否有某些过程需要立即关注。 这意味着这些进程将在其他进程之前执行,因此您不会在编码时跳过帧,或者在鼠标点击和敌人死亡之间有很长的延迟时间。 这并不意味着所有进程都会更快结束:实际上CPU正在失去更大部分时间来决定接下来将执行哪个进程,并进行上下文切换。 因此总执行时间更长,这就是没有人在Web服务器或数据库机器上运行可抢占内核的原因。 但是可抢占的300Hz(甚至1000Hz)内核对于游戏服务器来说是最好的。

但是现在处理器有很多核心,所以当很少有进程需要关注时,可以很容易地将它们分配到不同的核心而不是等待核心接受它。

(stackexchange需要我参考/个人经验:我是一名电子工程师,嗜血的noobgamer在http://www.gamezoo.it上管理几个游戏服务器)。

所以,根据经验,我会说:如果你的处理器是一个强大的数字运算高频四核并且你通常不会在编码/解码/游戏时打开大量的网页(呵呵),你可以只需尝试通用(或i686或amd64,如果它们存在)内核并具有尽可能高的吞吐量(即处理器能够执行的原始数字运算)。 如果您遇到问题(它们应该是次要的)或者您的机器的function稍微弱于市场的顶部,请选择-preempt。

如果您使用的是只有一个或两个内核的低端计算机,请尝试使用-lowlatency。 您也可以尝试-realtime,但是您会发现它会阻止进程直到“实时”工作完成它们的工作。 我相信实时内核不是“vanilla”内核,而是应用了CONFIG_PREEMPT_RT补丁。 我认为实时内核仅适用于那些必须在嵌入式系统上构建单个应用程序的人,因此通常的桌面用户不应该有真正的好处,因为他们通常会同时运行相当数量的应用程序。

最后,如果您想自己重新编译内核以获得低延迟桌面,那么最相关的内核选项是:

 PREEMPT=y 

和:

 CONFIG_1000_HZ=y 

要添加一些省力,你可以检查这个:

 CONFIG_NO_HZ=y 

BTW:preemt-,lowlatency或rt内核不会让你的系统更快。 它们比通用内核稍慢

从上面引用的文件( http://www.versalogic.com/mediacenter/whitepapers/wp_linux_rt.asp

  1. 软实时系统可以降低平均延迟,但不能保证最大响应时间。
  2. 即使在最坏情况下的系统负载下,硬实时系统也始终满足所需的最后期限(100%)。
  3. 根据Yaghmour [4]的说法,“实时处理保证,而不是原始速度。”

该文章称,对于硬实时内核无响应或时间限制是最重要的属性,因此有时它们会延迟导致延迟的非关键活动,但对于低延迟或其他软实时内核尝试减少一般延迟,这在大多数情况下都有帮助。 由于延迟减少,系统似乎很快。 仔细阅读文章。