我正在尝试提高服务器的性能。我有几个进程需要低抖动(方差小于 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
答案3
1)不要使用无滴答模式,它仍然处于高度实验阶段,不推荐任何人使用,除了致力于此的开发人员,它也是为了帮助节省电量。
2) 完全抢占系统旨在提高桌面的响应能力,而自愿抢占系统则适用于一般用途(响应能力和吞吐量的混合)。如果您的服务器有 SMP(多核),您可能应该选择非抢占系统,因为大多数工作将在其核心上执行,并且不会中断,这通常 1) 需要时间 2) 浪费缓存
3) 1000Hz 是桌面值,它会产生开销,但允许玩游戏等。300 hz 是推荐用于视频的值(因此内容可以重新安排并且您仍然不会错过帧),而 100Hz 提供最佳吞吐量(尽管不适用于低延迟网络内容)。
如果您想要尽可能地稳定(不使用 RT 补丁),您应该这样做:周期性滴答(稳定性)不可抢占(稳定性)计时器频率(由您决定,1000 可获得最佳响应能力和低延迟,100 可获得最佳吞吐量但计时器的分辨率为 10ms,例如东西将运行至少 10ms)
希望这能有所帮助。