以下内核参数显示从 R6 到 R7 的行为非常不同,我们无法找出原因。任何帮助表示赞赏。
kernel.sched_min_granularity_ns
kernel.sched_wakeup_granularity_ns
背景:
- 应用程序已在 RHEL6 上运行
- 低延迟要求。
- 具有鲁棒性功能的应用程序,即一旦延迟开始增加超过可接受的阈值水平(预定义)或 CPU 使用率超过 85%,它将停止处理新请求以避免过载。
- 我们现在正尝试在 RHEL7 虚拟环境中进行部署,但无法像在 RHEL6 中那样充分利用 CPU。我们几乎无法达到 55-60% 的利用率,并且观察到延迟峰值超出了可接受的阈值。
笔记:
- 两种情况(R6/R7)的应用程序版本相同。
- 数据库及其配置也相同
- 内存和CPU设置也相同
在 R7 中,我们使用调整的配置文件,它更改了影响行为的以下内核参数:
kernel.sched_min_granularity_ns = 10000000
kernel.sched_wakeup_granularity_ns = 15000000
如果我们将这些值更改为 R6 默认值 ( kernel.sched_min_granularity_ns = 4000000 kernel.sched_wakeup_granularity_ns = 4000000
),那么我们会将 CPU 使用率调整为 R6 级别。然而,当我们在 R6 中设置相同的值时,我们没有看到任何不利影响,CPU 仍然像之前一样扩展至 85-90%。
因此,我们正在寻找为什么相同的参数与 RHEL6 和 RHEL7 相比表现截然不同的原因?