ACPI cpufreq

我在排查 排查lscpu缓慢 发现国产化海光服务器启用了 acpi_cpufreq 内核模块之后,似乎出现了比较大性能问题:

  • cpupower 配置了 performance governor

  • 当使用 acpi-cpufreq 驱动时,处理器的主频被限制在 1.20 GHz - 2.00 GHz ,可能无法达到硬件实际最高主频 2.40 GHz

  • 当出现CPU sys 压力时,会阻塞 lscpu 运行可能和 CPU空闲时间管理(CPU Idle Time Management) 缺陷有关

那么为何我升级内核(修订内核参数)的早期海光服务器会加载 acpi_cpufreq 内核模块进而启动了 acpi-cpufreq 驱动的 CPU频率 性能伸缩(Performance Scaling) 功能呢?

原因就在于:

BIOS/UEFI 配置Power Management策略

在现代服务器的 BIOS/UEFI 配置中,有关电源管理选项决定了主机是否采用 OS 控制电源管理模式:

  • 例如 HPE ProLiant DL360 Gen9服务器 服务器,在 System configuration ---> Bios ---> Power Management 配置中,有一个 Power Profile 配置项,当选择 OS Control Mode

../../../../_images/power_management_os_control_mode.png
  • 并且内核参数配置了 intel_pstate=disable ,则系统启动时就会尝试加载 acpi_cpufreq 内核模块

备注

我的实践发现,如果 没有 配置 intel_pstate 选项,只要BIOS激活 OS Control Mode 的电源管理策略,也会自动加载 acpi_cpufreq

备注

如果BIOS已经激活 OS Control Mode 电源管理策略,但是要禁用 acpi_cpufreq ,就需要把 acpi_cpufreq 内核模块加入黑名单避免加载。详见 排查lscpu缓慢

参考