Sta*_*tec 61 kernel linux-kernel latency
我找不到关于rt
和lowlatency
Linux 内核的任何好的信息。
我很奇怪,为什么有人会不希望使用低延时的内核。
另外,如果有人能说出具体的区别是什么,那也太好了。
Ste*_*itt 79
不同的配置,“通用”、“低延迟”(在 Ubuntu 中配置)和 RT,都是关于平衡吞吐量与延迟。通用内核支持吞吐量而不是延迟,其他内核支持延迟而不是吞吐量。因此,需要吞吐量多于需要低延迟的用户不会选择低延迟内核。
与通用配置相比,低延迟内核更改了以下设置:
CONFIG_PREEMPT
而不是CONFIG_PREEMPT_VOLUNTARY
);RT 内核向主线内核添加了许多补丁,并进行了一些配置调整。大多数补丁的目的是通过移除或拆分锁来允许更多的抢占机会,并减少内核处理不间断任务所花费的时间(特别是通过改进日志记录机制并减少使用它们) . 所有这一切的目标是让内核满足最后期限,即确保当需要处理某事时,它不会忙于做其他事情;这与高吞吐量或低延迟不同,但修复延迟问题会有所帮助。
在大多数发行版中默认配置的通用内核被设计为“明智”的妥协:它们试图确保没有单个任务可以独占系统太长时间,并且任务可以合理频繁地切换,但不会影响吞吐量— 因为内核花在考虑是否切换任务(内核内部或内核外)或处理中断上的时间越多,整个系统花费在“工作”上的时间就越少。这种折衷对于延迟敏感的工作负载(例如实时音频或视频处理)来说还不够好:对于这些工作负载,低延迟内核以牺牲一些吞吐量为代价提供了较低的延迟。并且对于实时要求,实时内核会移除尽可能多的低延迟阻塞程序,但代价是增加吞吐量。
Linux 的主流发行版大多安装在服务器上,传统上认为延迟不是那么重要(虽然如果你做百分性能分析,并关心最高百分性能,你可能不同意),所以默认内核相当保守的。正如内核自己的文档所建议的那样,桌面用户可能应该使用低延迟内核。事实上,使用的低延迟内核越多,对其相关性的反馈就越多,这有助于对默认内核配置进行普遍适用的改进;RT 内核也是如此(许多 RT 补丁在某些时候是针对主流内核的)。
这个关于这个主题的演讲提供了很多背景。
gil*_*had 27
Stephen Kitt 解释了配置和平衡以及技术参数方面的所有内容。我只想提供一个小的直观区别:
你是在野生动物园,乘坐吉普车穿越地形。你的猎物正在奔跑。当猎物在十字准线中时,您扣动扳机并射击 - 计算很简单 - 十字准线中的猎物 = 命中,猎物不在十字准线 = 未命中 - 你迫切需要低延迟- 然后你恢复,重新装填步枪,找到另一个猎物- 不需要额外的速度,不需要规律。延迟就是全部。
您正在转换来自该 safari 的视频。它很长,需要几个小时。您不在乎何时处理特定帧以及某些帧是否比其他帧花费更多时间来处理。您需要尽快完成流程 - 更高的吞吐量意味着更少的时间,其他都不重要
您正在收到电报 - 只是短线,长线和空格 - 莫尔斯很容易破译,您不需要每个脉冲开始或结束的确切时间,但是您需要保证,您不会错过任何一个 - 您需要实时(可能慢,电报没那么快,但一定是有规律的
在这三个示例中,出于显而易见的原因,您清楚地选择了延迟、吞吐量或规律性中的一个,而牺牲了其他两个。如果您不能同时拥有所有三个,那么只有其中一个才是真正想要低延迟的。
小智 6
通俗地说:
基本上,通用内核在最短的时间内完成最多的工作,而低延迟内核使 PC 响应最快;假设内核或系统中没有遇到错误。
对于大多数人来说,低延迟内核最有意义。但是如果你总是给你的 PC 做很多工作,那么通用内核就是为你准备的。
如果 90% 的时间跨所有内核的 CPU 负载 < 60%,那么另一种说法是低延迟内核适合您。另一方面,如果您在所有内核上的 CPU 负载超过 80%、90% 或更多时间,那么通用内核适合您。
测验:哪个内核在基准测试中得分更高?只要延迟作为基准参数被忽略,泛型总是会赢得比赛,但低延迟就像你身边有一只准备委托的章鱼。
因为有取舍。切换进程或进入/退出中断需要时间。例如,以 1000Hz 而不是 250Hz 的频率运行调度程序意味着您将有一个计时器中断,并且可能会以四倍的频率切换进程。这可以让进程更快地做出反应,因为它更经常地被允许执行。但是,作为人类,您可能不会注意到任何差异(250Hz 意味着每 4 毫秒一次,这已经比人类的任何反应时间快得多)。
处理能力或 I/O 吞吐量的总量是有限的,更频繁地调用调度程序只会浪费一部分。
归档时间: |
|
查看次数: |
27367 次 |
最近记录: |