PVE更改RAPL稳温度
原创2025年12月12日大约 3 分钟
PPVE更改RAPL稳温度
背景
PVE工控机器发现CPU温度跳动范围大,风扇转速太快,声音太大,可影响心情
环境信息
PVE版本信息
root@:~# pveversion -v
proxmox-ve: 8.4.0 (running kernel: 6.8.12-15-pve)
pve-manager: 8.4.14 (running version: 8.4.14/b502d23c55afcba1)
proxmox-kernel-helper: 8.1.4
proxmox-kernel-6.8: 6.8.12-15CPU 信息
root@:~# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 39 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: GenuineIntel
BIOS Vendor ID: Intel(R) Corporation
Model name: 12th Gen Intel(R) Core(TM) i5-1240P
BIOS Model name: 12th Gen Intel(R) Core(TM) i5-1240P To Be Filled By O.E.M. CPU @ 3.4GHz
BIOS CPU family: 205
CPU family: 6
Model: 154
Thread(s) per core: 2
Core(s) per socket: 12
Socket(s): 1
Stepping: 2
CPU(s) scaling MHz: 37%
CPU max MHz: 4400.0000
CPU min MHz: 400.0000常用的方案
① PL限制功耗(后面我是用这种方案)
稳定睿频 CPU 温度
限功耗(PL) + 限冲动(Turbo 行为) + 调度降热密度 + 频率策略**
# PL1:长期稳态
echo 25000000 > /sys/class/powercap/intel-rapl:0/constraint_0_power_limit_uw
# PL2:短期,但不暴力
echo 35000000 > /sys/class/powercap/intel-rapl:0/constraint_1_power_limit_uw
# PL2 持续时间
echo 8000 > /sys/class/powercap/intel-rapl:0/constraint_1_time_window_us
## 默认值
## 对应PL1(长期功耗限制),长期限制在28W
root@:~# cat /sys/class/powercap/intel-rapl:0/constraint_0_power_limit_uw
28000000
## 对应PL2(短期功耗限制 / Turbo 限制),长期限制在40W
root@:~# cat /sys/class/powercap/intel-rapl:0/constraint_1_power_limit_uw
40000000
## PL3(最大热设计功耗 / Package Limit),最大限制90W
root@:~# cat /sys/class/powercap/intel-rapl:0/constraint_2_power_limit_uw
90000000
## PL1 时间窗口(长期功耗允许持续时间)
# 单位:微秒 (μs),27983872 μs ≈ 27.98 秒
root@:~# cat /sys/class/powercap/intel-rapl:0/constraint_0_time_window_us
27983872
## PL2 时间窗口(短期/瞬态功耗允许持续时间)
# 单位:微秒 (μs),2440 μs ≈ 2.44 ms(瞬态,几乎是毫秒级)
root@:~# cat /sys/class/powercap/intel-rapl:0/constraint_1_time_window_us
2440② Turbo 开关(最直接,但最“硬”)
查看 Turbo 状态(我的默认是 0)
这个参数我保持不变,不建议修改
root@:~# cat /sys/devices/system/cpu/intel_pstate/no_turbo
00→ 允许 Turbo1→ 禁用 Turbo👉 适合:极端稳定 > 性能
③ intel_pstate 的频率上限(强烈推荐)
这是服务器场景非常常用的方法。
查看当前上限
root@:~# cat /sys/devices/system/cpu/intel_pstate/max_perf_pct
100👉 这是“最平衡”的稳温手段之一
④ HWP 能效偏好(Alder Lake 非常重要)
Alder Lake 用的是 Intel HWP(硬件控频)。
查看
root@:~# cat /sys/devices/system/cpu/intel_pstate/hwp_dynamic_boost
0关闭(0)效果
- 避免“突然暴力拉频”
- 提升频率变化的平滑性
- 温度抖动明显减少
⑤ P 核 / E 核 调度隔离(PVE 场景很值)
这种模式一般是临时或者长期任务,需要指定程序或进程PID
思路
- P 核:高功耗 / 高热
- E 核:低功耗 / 稳定
实用策略
- VM 尽量绑 E 核
- 宿主机 / IO 留给 P 核
例子(示意):
# 假设 E 核是 cpu 8-15
taskset -c 8-15 qemu-system-x86_64👉 热密度直接下降
⑥ Linux governor(前文已经配置)
推荐
cpupower frequency-set -g powersave在 12 代以后:
powersave≠ 低性能- 是 HWP 自行决策
- 比
performance稳得多
本机核心配置
## 设置短期功耗限制 PL2
echo 35000000 > /sys/class/powercap/intel-rapl:0/constraint_1_power_limit_uw
## 设置短期窗口(9.76 ms)设置为 10000 会自动设置为 9760
echo 9760 > /sys/class/powercap/intel-rapl:0/constraint_1_time_window_us开机设置
创建 systemd 服务
nano /etc/systemd/system/rapl-pl2.service
[Unit]
Description=Set Intel RAPL PL2 power limit and time window
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/bin/bash -c '\
echo 35000000 > /sys/class/powercap/intel-rapl:0/constraint_1_power_limit_uw; \
echo 9760 > /sys/class/powercap/intel-rapl:0/constraint_1_time_window_us; \
cat /sys/class/powercap/intel-rapl:0/constraint_1_power_limit_uw; \
cat /sys/class/powercap/intel-rapl:0/constraint_1_time_window_us'
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target- ExecStart:设置 PL2 功耗为 35W,时间窗口 10ms
- cat 命令用来确认实际生效值(会自动微调)
9760 - RemainAfterExit=yes:确保 systemd 认为服务状态保持“已应用”
启用并测试
# 重新加载 systemd
systemctl daemon-reload
# 启用开机自启
systemctl enable rapl-pl2.service
# 立即运行一次,检查效果
systemctl start rapl-pl2.service
# 查看状态
systemctl status rapl-pl2.service读回值:
cat /sys/class/powercap/intel-rapl:0/constraint_1_power_limit_uw
cat /sys/class/powercap/intel-rapl:0/constraint_1_time_window_us确认实际生效值(比如可能是 9760 μs)