Powercap (intel-rapl) - 改变长期功率限制

Powercap (intel-rapl) - 改变长期功率限制

我想了解如何使用 rapl-set 或 powercap-set 来更改运行 Ubuntu 20.04 的 Intel N4200 笔记本电脑的长期功率限制。

首先,我知道我的 BIOS 允许修改长期约束(最多预设最大值),因为我在 Windows 上使用 ThrottleStop 获得了良好的效果。

我的默认约束:

powercap-info -p intel-rapl         
Zone 0
  name: package-0
  enabled: 0
  max_energy_range_uj: 262143328850
  energy_uj: 1431662228
  Constraint 0
    name: long_term
    power_limit_uw: 3999744
    time_window_us: 27983872
    max_power_uw: 5999616
  Constraint 1
    name: short_term
    power_limit_uw: 5999616
    time_window_us: 976
    max_power_uw: 0
  Zone 0:0
    name: core
    enabled: 0
    max_energy_range_uj: 262143328850
    energy_uj: 975192877
  Zone 0:1
    name: uncore
    enabled: 0
    max_energy_range_uj: 262143328850
    energy_uj: 308897463
  Zone 0:2
    name: dram
    enabled: 0
    max_energy_range_uj: 262143328850
    energy_uj: 410797898
    Constraint 0
      name: long_term
      power_limit_uw: 0
      time_window_us: 976

我正在查看区域 0、约束 0。您可以看到,长期限制设置为 4w,短期限制设置为 6w。我想要实现的是让长期约束等于短期约束,这将复制我在 Windows 上使用 ThrottleStop 实现的效果。

为此,我尝试了以下方法,但似乎都产生了相同的效果:

cd /sys/class/powercap/intel-rapl/intel-rapl:0 && cat constraint_0_max_power_uw | tee constraint_0_power_limit_uw
rapl-set -p 0 -c 0 -l 5999616 -e 1
powercap-set -p intel-rapl -z 0 -c 0 -l 5999616 -e 1

其中任何一个似乎都根据需要设置了约束:

Zone 0
  name: package-0
  enabled: 1
  max_energy_range_uj: 262143328850
  energy_uj: 4600742311
  Constraint 0
    name: long_term
    power_limit_uw: 5999616
    time_window_us: 27983872
    max_power_uw: 5999616

无论使用哪种方法,都不会出现错误,相关文件也会成功更新。但是,新的功率限制并未得到遵守。请参阅随附的 s-tui 屏幕截图,其中说明了无论设置如何,时钟和功率限制都会下降。

CPU 调节器设置为“性能”,并且禁用 TLP。

我是不是漏掉了什么?我假设由于文件存在且没有产生错误,因此加载了相关的驱动程序/模块,但感觉我忽略了这种性质的东西。

如能得到任何帮助/建议我将非常感激。有人在 Linux 上见过这个程序吗?

s-tui 截图

答案1

我不使用 rapl-set 或 powercap-set 进行功率封顶。我一般使用

    echo 5999616 | sudo tee constraint_0_power_limit_uw

它对我始终有效。

答案2

功率限制也由 hostbridge mmio 寄存器 PACKAGE_RAPL_LIMIT_0_0_0_MCHBAR_PCU 控制。您可以使用设置PL文件用于设置功率限制的脚本,负责处理 mmio 寄存器。

$ sudo setPL.sh 6 6

相关内容