粒度内核参数对 CPU 利用率的影响 RHEL6 与 RHEL7

粒度内核参数对 CPU 利用率的影响 RHEL6 与 RHEL7

以下内核参数显示从 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 相比表现截然不同的原因?

相关内容