如果我有无滴答和高分辨率计时器,是否需要 1000 HZ Linux 内核?

如果我有无滴答和高分辨率计时器,是否需要 1000 HZ Linux 内核?

我正在尝试提高服务器的性能。我有几个进程需要低抖动(方差小于 10ms)。

我在 i7-920(4 个物理核心,8 个带 HT)上的最大负载为 4。大约有 10 个进程,占核心用户模式的 40% 到 90%。系统使用率总计为 3%。总 CPU 使用率最高为 80%。

如果已经设置了无滴答和高分辨率计时器,将内核从 100hz 设置为 1000hz 是否会改善抖动?

此页面似乎表明它仍在做一些事情。https://lkml.org/lkml/2009/4/28/401

如何从自愿(PREEMPT_VOLUNTARY)转变为可抢占(PREEMPT)?

答案1

如果低抖动对您很重要,是的,您可能希望同时使用 1000hz 和 PREEMPT。

如果这些进程确实对时间敏感,那么您可能需要一些更多面向实时的补丁/内核,或者至少一些进程级调度参数,如 rtprio。

典型用途是音频服务器,例如参见杰克音频

答案2

我正在尝试提高服务器的性能。我有几个进程需要低抖动(方差小于 10ms)。

任何实时都不会提高性能,事实上,它会让整个系统运行得更顺畅,但速度会慢一点。换句话说,这是吞吐量与延迟的关系。如果这确实是你所需要的,那么有几种选择:

  • 使用 300 Hz 甚至 1KHz,PREEMPT,不要使用无滴答
  • 使用nice,schedtool根据您的需要分配适当的优先级/类别
  • 尝试一下逆转录或者广义函数法

答案3

1)不要使用无滴答模式,它仍然处于高度实验阶段,不推荐任何人使用,除了致力于此的开发人员,它也是为了帮助节省电量。

2) 完全抢占系统旨在提高桌面的响应能力,而自愿抢占系统则适用于一般用途(响应能力和吞吐量的混合)。如果您的服务器有 SMP(多核),您可能应该选择非抢占系统,因为大多数工作将在其核心上执行,并且不会中断,这通常 1) 需要时间 2) 浪费缓存

3) 1000Hz 是桌面值,它会产生开销,但允许玩游戏等。300 hz 是推荐用于视频的值(因此内容可以重新安排并且您仍然不会错过帧),而 100Hz 提供最佳吞吐量(尽管不适用于低延迟网络内容)。

如果您想要尽可能地稳定(不使用 RT 补丁),您应该这样做:周期性滴答(稳定性)不可抢占(稳定性)计时器频率(由您决定,1000 可获得最佳响应能力和低延迟,100 可获得最佳吞吐量但计时器的分辨率为 10ms,例如东西将运行至少 10ms)

希望这能有所帮助。

相关内容