1. 先执行GRUB禁用intel_pstate的配置:脚本依赖 acpi-cpufreq 驱动,所以重装系统后,必须先执行GRUB配置,禁用intel_pstate,重启系统后,再执行这个脚本,否则驱动不对,脚本不生效
cat > /etc/default/grub << 'EOF'
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="iStoreNextD"
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 intel_pstate=disable"
GRUB_CMDLINE_LINUX=""
EOF
update-grub
reboot
2.重启系统后,再执行下面的 schedutil 一键脚本,才算完整流程。(功率根据自己cpu改,当前CPU 1265LV3)
# 清理旧服务
systemctl stop cpu-powersave.service
systemctl disable cpu-powersave.service
rm -f /etc/systemd/system/cpu-powersave.service
systemctl daemon-reload
# 创建schedutil守护脚本
cat > /usr/local/bin/cpu-schedutil-lock.sh << 'EOF'
#!/bin/bash
while true; do
for cpu in /sys/devices/system/cpu/cpu[0-9]*; do
echo "schedutil" > "$cpu/cpufreq/scaling_governor"
echo 800000 > "$cpu/cpufreq/scaling_min_freq"
echo 2500000 > "$cpu/cpufreq/scaling_max_freq"
done
sleep 10
done
EOF
chmod +x /usr/local/bin/cpu-schedutil-lock.sh
# 创建服务
cat > /etc/systemd/system/cpu-schedutil.service << 'EOF'
[Unit]
Description=CPU Schedutil Governor Lock (Dynamic Power Saving)
After=local-fs.target multi-user.target
[Service]
Type=simple
ExecStart=/usr/local/bin/cpu-schedutil-lock.sh
Restart=always
RestartSec=5
Nice=-20
IOSchedulingClass=realtime
User=root
Group=root
TimeoutStartSec=30
[Install]
WantedBy=multi-user.target
EOF
# 启用服务
systemctl daemon-reload
systemctl enable --now cpu-schedutil.service
# 验证
echo "当前CPU调度器:"
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
echo "当前CPU频率(待机):"
cat /proc/cpuinfo | grep "cpu MHz"
3.安装stress(可选,用于满载测试):
重装系统后, stress 工具会被清除,如需测试满载性能用stress工具给CPU加满载(如果没装,先执行 apt install -y stress)
stress --cpu $(nproc) --timeout 60
然后用另一个终端观察:
echo "当前CPU频率(待机)"
cat /proc/cpuinfo | grep "cpu MHz"
评论(已关闭)
评论已关闭