我想了解如何使用 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 上见过这个程序吗?
答案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