pve 9.0 改cpu schedutil 模式 方法
参考这个 可以改成 4中选项的 https://www.cnblogs.com/zqingyang/p/19222076
一、nano set_schedutil_final.sh
添加以下内容
!/bin/bash
set_schedutil_final_complete.sh
Proxmox VE root 用户一键永久开启 schedutil CPU governor
Intel 优化 + 自动修复 + systemd 正确 + 无倒计时自动重启
set -e
echo "=== 检测 CPU 是否为 Intel ==="
CPU_VENDOR=$(lscpu | grep "Vendor ID" | awk '{print $3}')
REBOOT_NEEDED=0
if [[ "$CPU_VENDOR" == "GenuineIntel" ]]; then
GRUB_FILE="/etc/default/grub"
cp $GRUB_FILE ${GRUB_FILE}.bak
if ! grep -q "intel_pstate=passive" $GRUB_FILE; then
echo "✅ 修改 GRUB 配置,添加 intel_pstate=passive"
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="\([^"]*\)"/GRUB_CMDLINE_LINUX_DEFAULT="\1 intel_pstate=passive"/' $GRUB_FILE
update-grub
REBOOT_NEEDED=1
else
echo "✅ GRUB 已存在 intel_pstate=passive,无需修改"
fielse
echo "⚠️ 非 Intel CPU,跳过 intel_pstate 设置"fi
echo "=== 创建独立 governor 设置脚本 ==="
GOV_SCRIPT="/usr/local/bin/set-cpu-governor.sh"
cat > $GOV_SCRIPT <<'EOF'
!/bin/bash
设置所有 CPU 为 schedutil
for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
if [ "$(cat $cpu)" != "schedutil" ]; then
echo schedutil > $cpu
fidone
EOF
chmod +x $GOV_SCRIPT
echo "✅ 脚本 $GOV_SCRIPT 已创建"
echo "=== 创建 systemd 服务文件 ==="
SERVICE_FILE="/etc/systemd/system/set-cpu-governor.service"
cat > $SERVICE_FILE <<EOF
[Unit]
Description=Set CPU governor to schedutil
After=multi-user.target
[Service]
Type=oneshot
ExecStart=$GOV_SCRIPT
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
echo "✅ systemd 服务文件已创建"
echo "=== 重新加载 systemd 并启用服务 ==="
systemctl daemon-reload
systemctl enable set-cpu-governor.service
systemctl start set-cpu-governor.service
echo "=== 检查并立即修复所有 CPU governor ==="
$GOV_SCRIPT
echo "=== 当前 CPU governor 状态 ==="
for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
echo "$cpu : $(cat $cpu)"done
echo "✅ schedutil 已设置为永久生效"
if [[ $REBOOT_NEEDED -eq 1 ]]; then
echo "🔄 GRUB 修改已生效,立即重启系统..."
rebootelse
echo "ℹ️ 无需重启,所有设置已生效"fi
二、赋予执行权限 chmod +x set_schedutil_final.sh
三、直接运行 ./set_schedutil_final.sh