我正在尝试使用以下方法将约束_0_power_limit 文件中的值替换为新值echo "45000000" | sudo tee constraint_0_power_limit_uw
该文件位于/sys/class/powercap/intel-rapl/intel-rapl:0/
当我使用上述命令时,出现tee: constraint_0_power_limit_uw: No data available
错误。
我怎样才能修复这个错误?
答案1
在操作系统(Linux)级别调整 TDP(热设计功率)的能力需要:
- TDP 可配置的处理器(实际上 TDP 是固定的,但最大功率是可调的)
- 支持这些功能的 BIOS和已将其提供给操作系统
通过查看启用标志来进行检查。两个例子:
doug@s15:~$ cat /sys/class/powercap/intel-rapl/intel-rapl:0/enabled
0
。
doug@s18:~$ cat /sys/class/powercap/intel-rapl/intel-rapl:0/enabled
1
现在,尝试启用已禁用的那个:
doug@s15:~$ echo 1 | sudo tee /sys/class/powercap/intel-rapl/intel-rapl:0/enabled
1
tee: '/sys/class/powercap/intel-rapl/intel-rapl:0/enabled': Function not implemented
这看起来不太好。因此,让我们检查一下这台计算机上的 dmesg:
doug@s15:~$ dmesg | grep locked
[ 21.945790] intel_rapl_common: RAPL package-0 domain package locked by BIOS
[ 5315.714761] powercap intel-rapl:0: package locked by BIOS, monitoring only
因此,请注意是 BIOS 不允许它。在这种情况下,BIOS 根本不支持它,它不仅仅是被禁用。读者会想检查他们的 BIOS 是否有某种启用功能,但我在计算机的 BIOS 中找不到这样的开关。
因此,对于我们知道这行不通的计算机来说:
doug@s15:~$ echo "94500000" | sudo tee /sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw
94500000
tee: '/sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw': No data available
现在,对于启用为 1 的计算机:
doug@s18:~$ cat /sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw
93500000
doug@s18:~$ echo "94500000" | sudo tee /sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw
94500000
doug@s18:~$ cat /sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw
94500000
注意:在研究这个答案时,我确实找到了用户能够将 1 写入enable
0 状态的证词。我认为这表明 BIOS 支持这些功能,但默认为禁用。