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


105

安装Ubuntu Studio 12.04之后,我发现它使用了低延迟内核。我搜索了为什么以及如何回到实时或通用状态。但是,Linux的这一部分似乎没有涉及太多。

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

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


3
+1,因为如果每个人都陷入困境,那肯定是一个很好的问题。我仍然不知道低延迟,通用和实时内核之间的区别。如果-realtime是实时的,那代表什么-rt呢?什么回事的-preempt内核?我要感谢gemue2010,他在解释它方面做得很好,但仍然无法解释所有内容。
Hitechcomputergeek

Answers:


61

这些是提供的一些简单指南,可帮助您了解应该使用哪种内核以及按照什么顺序进行测试以适合您的用例。

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

Ubuntu帮助源

因此,这取决于您将如何处理Studio发行版。对于大多数需要快速最终用户响应时间的用户来说,通用将很好,而对于其他需要进行专业视频编辑的用户来说,即使是简单的丢帧也无法实现实时内核。

有关更详尽,易于理解的博客文章,请阅读此链接


1
我已经阅读了您发布的上一篇文章。关于第二个,这些事实有多可靠?
Starx 2012年

好吧,提到的测试是他们自己进行的。如果Ubuntu团队首先选择了Latency,那一定是原因。因此,您现在想知道差异。问题解决了 ?
ubuntu粉丝

5
不。我认为问题没有解决。如果您的回答有帮助,那么我的好奇心就会更大。
Starx 2012年

9
这在2015年是否仍然适用?的-preempt-rt-realtime仁无不复存在
naught101

51

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

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

但是如今,处理器具有许多核心,因此当需要注意的进程很少时,可以轻松地将它们分配到其他核心上,而不必等待核心采用它。

(stackexchange需要我提供参考/个人经验:我是一位电子工程师,嗜血的noobgamer在http://www.gamezoo.it上拥有多个游戏服务器)。

因此,根据经验,我会说:如果您的处理器是强大的数字运算高频四核处理器,并且您通常在编码/解码/游戏(呵呵)时不打开大量网页,则可以只需尝试通用(或i686或amd64,如果存在的话)内核,并具有最高的吞吐量(即,处理器能够执行的原始数字处理)。如果您遇到问题(实际上应该是很小的问题),或者您的机器的功能不如市场顶尖产品强,请使用-preempt。

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

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

PREEMPT=y

和:

CONFIG_1000_HZ=y

要增加一些省电,您可以检查以下一项:

CONFIG_NO_HZ=y

我注意到您提到维护服务器,我正在尝试为阀源专用服务器(特别是CSGO)找出最佳内核。我发现的大多数CS线程都与需要1000Hz内核的goldsrc有关。使用srcds,lowlatency不好吗?如果没关系,我将坚持低延迟,因为这就是我现在所拥有的(我隔离了128个tick srcds服务器的cpu核心,因为它实际上并没有从多线程中受益)。
Vincent De Smet 2014年

有用的知识,我将完全改变为抢先。我不急着想让我的内核像个肮脏的海盗。
userDepth '16

4

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

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

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


是的,但是我们需要知道哪个内核变体与哪个实时系统的“硬度”相匹配。
Melebius

0

我有一台旧的笔记本电脑,配备双AMD A6-4400M,主频为1600MHz,不在办公室时很少使用,主要用于阅读电子邮件和浏览休闲网站。某些内容可能与软件更新有关,这使其无法响应。就像打了十几个字符却看不到第一个字符一样。通常,小部件会询问我是否应强制退出进程。

sudo apt-get install linux-lowlatency并重新启动,它变得平滑和响应。(uname -r 5.0.0-20-lowlatency。)太好了,我应该在数年前就切换了。让我强调Seven的答案:除非您想从数字运算服务器中挤出最大值,否则请使用-preempt

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.