sam*_*sam 3 power-management cpu intel-cpu 18.04
我正在寻找一些可以设置CPU最大 TDP的程序,就像我们在 Windows 上的 Intel XTU 中所做的那样。我能够通过这个项目对 CPU 进行降压。我还可以使用这个优秀的项目来监控 CPU 的 TDP 。我在互联网上搜索过任何此类程序,但没有找到。
编辑1:
我的系统有一个 Core i7-9750H CPU,OEM 将最大 TDP 设置为 60 瓦,在 Ubuntu 18.04LTS 上运行,内核为 4.18.20-041820-generic。
编辑2
我已将内核更新为 5.3.0-46-generic(带符号),输出sudo turbostat --Summary --interval 5 --show Avg_MHz,Busy%,Bzy_MHz,IRQ,PkgTmp,PkgWatt,GFXWatt如下:
...
cpu0: MSR_RAPL_POWER_UNIT: 0x000a0e03 (0.125000 Watts, 0.000061 Joules, 0.000977 sec.)
cpu0: MSR_PKG_POWER_INFO: 0x00000168 (45 W TDP, RAPL 0 - 0 W, 0.000000 sec.)
cpu0: MSR_PKG_POWER_LIMIT: 0x42835800dd8230 (UNlocked)
cpu0: PKG Limit #1: ENabled (70.000000 Watts, 28.000000 sec, clamp ENabled)
cpu0: PKG Limit #2: ENabled (107.000000 Watts, 0.002441* sec, clamp DISabled)
...
Run Code Online (Sandbox Code Playgroud)
输出rdmsr --bitfield 14:0 -d 0x610为560。这意味着最大输出为0.125 * 560 = 70瓦
的输出sudo rdmsr 0x610是42835800dd8230。
您能否详细说明一下计算@doug-smythies
对于您的处理器Core i7 9750H,默认 TDP 为 45 瓦。如果您的处理器支持,您可以调整 TDP。
doug@s18:~$ sudo turbostat --Summary --interval 5 --show Avg_MHz,Busy%,Bzy_MHz,IRQ,PkgTmp,PkgWatt,GFXWatt
...
cpu0: MSR_RAPL_POWER_UNIT: 0x000a0e03 (0.125000 Watts, 0.000061 Joules, 0.000977 sec.)
cpu0: MSR_PKG_POWER_INFO: 0x000002f8 (95 W TDP, RAPL 0 - 0 W, 0.000000 sec.)
cpu0: MSR_PKG_POWER_LIMIT: 0x4283e800dd8320 (UNlocked)
cpu0: PKG Limit #1: ENabled (100.000000 Watts, 28.000000 sec, clamp ENabled)
cpu0: PKG Limit #2: ENabled (125.000000 Watts, 0.002441* sec, clamp DISabled)
...
Run Code Online (Sandbox Code Playgroud)
所以,我们知道比例因子是 0.125 瓦,并且有人似乎已经将功率限制从默认的 95 调整到 100 瓦,但让我们通过直接读取 MSR 来检查:
root@s18:/home/doug# rdmsr --bitfield 14:0 0x610
320
root@s18:/home/doug# rdmsr --bitfield 14:0 -d 0x610
800
Run Code Online (Sandbox Code Playgroud)
请注意,我读取了寄存器两次,一次以十六进制(基数 16)读取,一次以十进制(基数 10)读取。
800 * 0.125 = 100 瓦。
现在,假设我想将其设为 50 瓦,首先再次读取寄存器,但保留所有内容:
root@s18:/home/doug# rdmsr 0x610
4283e800dd8320
Run Code Online (Sandbox Code Playgroud)
现在更改相应的位字段(从上面的 14 更改为 0)。对于最低有效 16 位,我们有:
8 3 2 0
1000 0011 0010 0000
Run Code Online (Sandbox Code Playgroud)
取出 0x320(800 以 10 为底)并放入 50 / 0.125 = 400 = 0x190:
8 1 9 0
1000 0001 1001 0000
root@s18:/home/doug# wrmsr 0x610 0x4283e800DD8190
root@s18:/home/doug# rdmsr 0x610
4283e800dd8190
Run Code Online (Sandbox Code Playgroud)
并用涡轮稳定器检查它:
doug@s18:~$ sudo ~/turbostat --Summary --interval 5 --show Avg_MHz,Busy%,Bzy_MHz,IRQ,PkgTmp,PkgWatt,GFXWatt
...
cpu0: MSR_RAPL_POWER_UNIT: 0x000a0e03 (0.125000 Watts, 0.000061 Joules, 0.000977 sec.)
cpu0: MSR_PKG_POWER_INFO: 0x000002f8 (95 W TDP, RAPL 0 - 0 W, 0.000000 sec.)
cpu0: MSR_PKG_POWER_LIMIT: 0x4283e800dd8190 (UNlocked)
cpu0: PKG Limit #1: ENabled (50.000000 Watts, 28.000000 sec, clamp ENabled)
cpu0: PKG Limit #2: ENabled (125.000000 Watts, 0.002441* sec, clamp DISabled)
... And now test it:
Avg_MHz Busy% Bzy_MHz IRQ PkgTmp PkgWatt GFXWatt
0 0.02 921 205 29 1.90 0.00
0 0.03 834 195 29 1.90 0.00
14 0.42 3440 384 29 2.06 0.00
0 0.03 800 196 29 1.90 0.00
0 0.03 812 190 29 1.90 0.00
0 0.03 800 212 29 1.90 0.00 <<< System idle
0 0.03 811 204 29 1.90 0.00
3148 72.23 4358 9875 63 97.48 0.00 <<< Heavy load applied
3612 82.93 4355 11226 65 111.60 0.00 <<< Lots of power being used
3609 82.94 4351 11182 65 111.50 0.00
3120 83.35 3743 11145 45 72.32 0.00
2833 83.58 3389 11141 45 49.79 0.00 <<< Power limited to 50 watts
2838 83.58 3395 11179 45 49.85 0.00
2836 83.58 3393 11191 45 49.89 0.00
2837 83.58 3394 11119 46 49.90 0.00
2839 83.58 3397 11160 46 49.94 0.00
2838 83.58 3395 11148 46 49.91 0.00
2838 83.58 3395 11160 46 49.94 0.00
2838 83.58 3395 11284 46 49.94 0.00
654 19.28 3390 2807 32 12.97 0.00
0 0.03 803 202 32 1.90 0.00
0 0.03 802 172 32 1.90 0.00
Run Code Online (Sandbox Code Playgroud)
参考:英特尔SDM
实际上有一个更简单的方法:
看一下是否可以使用该方法:
doug@s18:~$ grep . /sys/class/powercap/intel-rapl/intel-rapl:0/*
/sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_max_power_uw:95000000
/sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_name:long_term
/sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw:100000000
/sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_time_window_us:27983872
/sys/class/powercap/intel-rapl/intel-rapl:0/constraint_1_max_power_uw:0
/sys/class/powercap/intel-rapl/intel-rapl:0/constraint_1_name:short_term
/sys/class/powercap/intel-rapl/intel-rapl:0/constraint_1_power_limit_uw:125000000
/sys/class/powercap/intel-rapl/intel-rapl:0/constraint_1_time_window_us:2440
grep: /sys/class/powercap/intel-rapl/intel-rapl:0/device: Is a directory
/sys/class/powercap/intel-rapl/intel-rapl:0/enabled:1
/sys/class/powercap/intel-rapl/intel-rapl:0/energy_uj:259409601961
grep: /sys/class/powercap/intel-rapl/intel-rapl:0/intel-rapl:0:0: Is a directory
grep: /sys/class/powercap/intel-rapl/intel-rapl:0/intel-rapl:0:1: Is a directory
grep: /sys/class/powercap/intel-rapl/intel-rapl:0/intel-rapl:0:2: Is a directory
/sys/class/powercap/intel-rapl/intel-rapl:0/max_energy_range_uj:262143328850
/sys/class/powercap/intel-rapl/intel-rapl:0/name:package-0
grep: /sys/class/powercap/intel-rapl/intel-rapl:0/power: Is a directory
grep: /sys/class/powercap/intel-rapl/intel-rapl:0/subsystem: Is a directory
Run Code Online (Sandbox Code Playgroud)
请注意启用线和当前值(与上面相同):
/sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw:100000000
/sys/class/powercap/intel-rapl/intel-rapl:0/enabled:1
Run Code Online (Sandbox Code Playgroud)
现在更改它并检查:
doug@s18:~$ echo "93500000" | sudo tee /sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw
doug@s18:~$ cat /sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw
93500000
Run Code Online (Sandbox Code Playgroud)
并检查涡轮稳定器:
doug@s18:~$ sudo ./turbostat --Summary --interval 5 --show Avg_MHz,Busy%,Bzy_MHz,IRQ,PkgTmp,PkgWatt,GFXWatt
...
cpu0: MSR_PKG_POWER_LIMIT: 0x4203e800dc82ec (UNlocked)
cpu0: PKG Limit #1: ENabled (93.500000 Watts, 28.000000 sec, clamp DISabled)
...
Run Code Online (Sandbox Code Playgroud)
请注意,在另一台计算机上,即使处理器已解锁并且位置显示为根可写,此内容也不起作用(两种方法):
doug@s15:~$ ls -l /sys/class/powercap/intel-rapl/intel-rapl:0/enabled
-rw-r--r-- 1 root root 4096 Apr 26 08:00 /sys/class/powercap/intel-rapl/intel-rapl:0/enabled
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8211 次 |
| 最近记录: |