3.4. 使用内核命令行选项禁用 C-states


processor.max_cstateintel_idle.max_cstate 内核命令行参数配置 CPU 核可以使用的最大消耗状态(C-state) 。例如,将参数设置为 1 确保 CPU 永远不会请求 C1 以下的 C-state。

使用此方法测试主机上应用程序的延迟是否受到 C-states 的影响。要不硬编码一个特定状态,请考虑使用更动态的解决方案。请参阅 使用一个自定义 TuneD 配置文件禁用 C-states

先决条件

  • tuned 服务没有运行或配置为不更新 C-state 设置。

流程

  1. 显示系统使用的空闲驱动程序:

    # cat /sys/devices/system/cpu/cpuidle/current_driver
    intel_idle
    Copy to Clipboard Toggle word wrap

    有关驱动程序的详情,请查看 kernel-doc 软件包提供的 /usr/share/doc/kernel-doc-<version>/Documentation/admin-guide/pm/cpuidle.rst 文件。

  2. 如果主机使用 intel_idle 驱动程序,请设置 intel_idle.max_cstate 内核参数,以定义 CPU 核应该能够使用的最高 C-state:

    # grubby --update-kernel=ALL --args="intel_idle.max_cstate=0"
    Copy to Clipboard Toggle word wrap

    设置 intel_idle.max_cstate=0 禁用 intel_idle 驱动程序。因此,内核使用 acpi_idle 驱动程序,该驱动程序使用 EFI 固件中设置的 C-state 值。因此,还要设置 processor.max_cstate 来覆盖这些 C-state 设置。

  3. 在独立于 CPU 厂商的每个主机上,设置 CPU 内核应该可以使用的最高 C-state:

    # grubby --update-kernel=ALL --args="processor.max_cstate=0"
    Copy to Clipboard Toggle word wrap
    重要

    如果您除了设置 intel_idle.max_cstate=0 之外还设置了 processor.max_cstate=0acpi_idle 驱动程序会覆盖 processor.max_cstate 的值,并将其设置为 1。因此,使用 processor.max_cstate=0 intel_idle.max_cstate=0,内核将使用的最高 C-state 为 C1,而不是 C0。

  4. 重启主机以使更改生效:

    # reboot
    Copy to Clipboard Toggle word wrap

验证

  1. 显示最大 C-state :

    # cat /sys/module/processor/parameters/max_cstate
    1
    Copy to Clipboard Toggle word wrap
  2. 如果主机使用 intel_idle 驱动程序,则显示最大 C-state :

    # cat /sys/module/intel_idle/parameters/max_cstate
    0
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat