尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Proxmox VE9.0优化-功耗切换到智能模式

Proxmox VE9.0优化-功耗切换到智能模式
📅 发布时间:2026/6/18 21:27:06
本文介绍了如何通过脚本切换Proxmox VE9.0主机功耗模式

模式介绍

PVE9.0目前支持下面几种模式,初始安装默认是performance。

  1. performance (高性能, 频率接近最大值。PVE默认/推荐)
  2. powersave (低功耗, 频率接近最低值)
  3. ondemand (动态调节, 负载高时升频。旧版内核)
  4. schedutil (智能调节, 根据调度器智能调节。新版内核推荐)

在个人PVE服务器上,AMD Ryzen 7 8745H功耗为3.28W,这支持amd-pstate-epp,自动调整功耗,最佳模式是performance。但是老型号的CPU没有自动调节,因此需要软调节,软调节如下:

这几个模式的对比如下:

  1. performance (默认的):

    • 原理: 强制 CPU 频率保持在或接近最大值 (4966 Mhz)。

    • 优点: 零延迟。一旦有任务,CPU 立即全速处理。

    • 缺点: 极其浪费电。即使 CPU 0% 负载,它也保持高频率,就像一辆在等红灯时还猛踩油门的跑车。

  2. powersave:

    • 原理: 强制 CPU 频率保持在或接近最小值 (400 Mhz)。

    • 优点: 最省电。

    • 缺点: 性能极差,延迟极高。当你突然需要性能时(比如打开 PVE 界面,或 VM 突发一个任务),CPU 会"反应不过来",导致整个系统感觉非常卡顿。这是以牺牲所有性能为代价来省电,性价比很低。

  3. schedutil (PVE 8.x 和新内核的推荐):

    • 原理: 智能调节。这是 ondemand 的进化版,它直接与 Linux 内核的任务调度器(scheduler)集成。

    • 优点: 完美平衡。

      • 空闲时: 它会自动降到最低频率(像 powersave 一样省电)。

      • 需要时: 它能根据任务的实际需求瞬间、智能地提升到所需的频率。

    • 结论: 这是最符合“功耗性价比最佳” 需求的模式。它在空闲时提供了 powersave 的低功耗,又在需要时提供 了 performance 的高响应速度。

所以,切换到 schedutil 模式。

模式切换Bash脚本

这个脚本会自动:

  1. 检查是否以 root 权限运行(PVE上修改系统配置必须是root)。

  2. 检查并自动安装 cpufrequtils,这是在Debian系(PVE基于Debian)上管理CPU模式的标准工具。

  3. 显示提到的四种模式菜单。

  4. 将选择永久写入 /etc/default/cpufrequtils 配置文件。

  5. 立即应用选择的模式到所有CPU核心。

  6. 重启并启用 cpufrequtils 服务,确保设置在PVE重启后依然生效。


脚本内容

  1. 登录PVE Shell:

    通过网页UI > 数据中心 > pve (您的节点) > Shell。或者通过SSH登录。

    必须以 root 用户身份登录。

  2. 创建脚本文件:

    vim set-pve-governor.sh
    
  3. 粘贴代码:

    将下面“脚本内容”区域中的所有代码复制并粘贴到 vim 编辑器中。

#!/bin/bash# ==========================================================
# PVE 9.0+ CPU Governor 永久切换脚本 (v2.1 - 修正语法错误)
# ==========================================================# 1. 权限检查:必须以 root 身份运行
if [ "$(id -u)" -ne 0 ]; thenecho "错误:此脚本必须以 root 权限运行。"echo "您当前已经是 root,请直接运行 './set-pve-governor.sh'"exit 1
fi# 定义服务名称和路径
SERVICE_NAME="set-cpu-governor.service"
SERVICE_PATH="/etc/systemd/system/$SERVICE_NAME"
AVAILABLE_GOVERNORS=""
CURRENT_GOVERNOR=""# 2. 显示当前设置
echo "---------------------------------------"
echo "正在检查可用的 CPU 模式..."
if [ -f "/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors" ]; thenAVAILABLE_GOVERNORS=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors)echo "当前系统支持的模式: $AVAILABLE_GOVERNORS"CURRENT_GOVERNOR=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)echo "当前 CPU 模式 (CPU0): $CURRENT_GOVERNOR"
elseecho "警告:无法读取 CPU 模式信息。您的 CPU 可能不支持频率调节。"
fi
echo "---------------------------------------"# 3. 显示菜单
echo "请选择要永久设置的 PVE CPU 模式:"
echo ""
echo "  1) performance  (高性能, 频率接近最大值。PVE默认/推荐)"
echo "  2) powersave    (低功耗, 频率接近最低值)"
echo "  3) ondemand     (动态调节, 负载高时升频。旧版内核)"
echo "  4) schedutil    (智能调节, 根据调度器智能调节。新版内核推荐)"
echo ""
echo "  q) 退出,不作任何更改"
echo ""
read -p "请输入选项 [1-4 或 q]: " choice# 4. 处理用户输入
GOVERNOR_TO_SET=""
case $choice in1)GOVERNOR_TO_SET="performance";;2)GOVERNOR_TO_SET="powersave";;3)GOVERNOR_TO_SET="ondemand";;# # v2.1 修正:这里从 4. 更改为 4)# 4)GOVERNOR_TO_SET="schedutil";;q|Q)echo "操作已取消。"exit 0;;*)echo "错误:无效的选项。"exit 1;;
esac# 检查所选模式是否受支持
if ! echo "$AVAILABLE_GOVERNORS" | grep -q "$GOVERNOR_TO_SET"; thenecho ""echo "!!! 警告:您选择了 '$GOVERNOR_TO_SET' !!!"echo "    但您的系统报告仅支持: $AVAILABLE_GOVERNORS"echo ""read -p "您确定要强行继续吗? (这很可能会失败) (y/N): " confirmif [[ "$confirm" != "y" ]] && [[ "$confirm" != "Y" ]]; thenecho "操作已取消。"exit 0fi
fiecho "您选择了: $GOVERNOR_TO_SET"
echo "---------------------------------------"# 5. 立即应用更改
echo "正在立即应用 '$GOVERNOR_TO_SET' 模式到所有CPU核心..."
# 使用 'tee' 一次性写入所有核心,并抑制错误输出以便单独处理
if ! echo "$GOVERNOR_TO_SET" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor > /dev/null 2>&1; thenecho ""echo "错误:立即应用模式失败!"echo "这通常是因为您的系统不支持 '$GOVERNOR_TO_SET' 模式。"echo "请重新运行脚本并选择一个支持的模式: $AVAILABLE_GOVERNORS"exit 1
fi
echo "立即应用完成。"# 6. 创建 systemd 服务文件
echo "正在创建永久性 systemd 服务: $SERVICE_PATH"# 使用 'tee' 命令来写入,'EOF' 前的 '-' 可以允许我们使用 Tab 缩进
tee "$SERVICE_PATH" > /dev/null <<-'EOF'
[Unit]
Description=Set CPU Governor to desired mode on boot
After=network.target[Service]
Type=oneshot
RemainAfterExit=true
# 'ExecStart' 将在下面被动态替换
ExecStart=[Install]
WantedBy=multi-user.target
EOF# 使用 sed 动态插入正确的 ExecStart 命令
# 注意: 'tee' 命令需要绝对路径 /usr/bin/tee
sed -i "s|^ExecStart=.*$|ExecStart=/bin/sh -c 'echo $GOVERNOR_TO_SET | /usr/bin/tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor'|" "$SERVICE_PATH"echo "服务文件创建成功。"# 7. 重载 systemd 并启用服务
echo "正在重载 systemd 并启用服务..."
systemctl daemon-reload
systemctl enable "$SERVICE_NAME"
# (可选) 立即启动服务以确认其工作,尽管我们已经手动应用了
systemctl restart "$SERVICE_NAME" echo "======================================="
echo "✅ 操作成功!"
echo "已永久设置 CPU 模式为 '$GOVERNOR_TO_SET'。"
echo ""
echo "当前 CPU 模式 (以 CPU0 为例):"
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo ""
echo "服务状态 (systemctl status $SERVICE_NAME):"
systemctl status --no-pager "$SERVICE_NAME" | grep -E "Loaded|Active"exit 0

  1. 给脚本添加执行权限:

    chmod +x set-pve-governor.sh
    
  2. 运行脚本:

    ./set-pve-governor.sh
    

之后,只需按照脚本的菜单提示(输入1、2、3或4)即可完成永久切换。

注意

root@pve:~/document/set-pve-governor# ./set-pve-governor.sh
---------------------------------------
正在检查可用的 CPU 模式...
当前系统支持的模式: performance powersave
当前 CPU 模式 (CPU0): performance
---------------------------------------
请选择要永久设置的 PVE CPU 模式:1) performance  (高性能, 频率接近最大值。PVE默认/推荐)2) powersave    (低功耗, 频率接近最低值)3) ondemand     (动态调节, 负载高时升频。旧版内核)4) schedutil    (智能调节, 根据调度器智能调节。新版内核推荐)q) 退出,不作任何更改请输入选项 [1-4 或 q]: 4!!! 警告:您选择了 'schedutil' !!!但您的系统报告仅支持: performance powersave您确定要强行继续吗? (这很可能会失败) (y/N): n
操作已取消。

PVE 9.0 (以及它的新内核) 100% 支持 schedutil。但我的 CPU 硬件驱动 告诉内核,它不需要 schedutil,因为它有更好、更底层的管理方式。

因此看到的 当前系统支持的模式: performance powersave 是最理想的情况,并自动启用了 AMD 最新的CPU频率管理驱动:amd_pstate。

1. 新驱动 amd_pstate vs 旧驱动 acpi-cpufreq

  • acpi-cpufreq (旧驱动):

    • 这是通用的 Linux 驱动。

    • 它提供 schedutil, ondemand, powersave, performance 等模式,让操作系统 (OS) 来“猜”并“命令”CPU 该做什么。

    • schedutil 是这个旧驱动里最好的“软件调节”模式。

  • amd_pstate (新驱动):

    • 这是 AMD 专为 Ryzen CPU 开发的现代驱动。

    • 它利用了 AMD CPU 内置的硬件电路 (称为 CPPC - Collaborative Processor Performance Control) 来自我管理频率。

    • CPU 硬件自己管理频率,远比操作系统“猜”要快得多、高效得多。

2. 为什么 amd_pstate 只有两个模式?

当 amd_pstate 驱动以其最高效的 “主动模式” (active mode / EPP) 运行时(PVE 9.0 内核对 8745H 默认就是这样做的),它不再需要 schedutil 这样的“软件调度器”。

它只向操作系统提供两种“策略”:

  1. performance (应该选的)

    • 误解: 这不是“始终跑在 100% 频率”。

    • 实际含义: “CPU,请你使用你内置的 CPPC 硬件算法,在最低功耗和最高睿频(Turbo)之间全速、自由地动态调节,目标是实现最大性能。”

    • 它在空闲时依然会降频,在需要性能时会瞬间飙升。这比 schedutil 更快、更省电。

  2. powersave

    • 实际含义: “CPU,请你同样使用 CPPC 硬件算法,但请限制最高频率,目标是优先省电。”

验证方法

  1. 检查正在使用的驱动:

    cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver
    
    • 输出应该会是:amd_pstate 或 amd-pstate-epp
  2. 检查 amd_pstate 的运行状态:

    cat /sys/devices/system/cpu/amd_pstate/status
    
    • 输出应该会是:active (这代表最高效的 EPP 硬件模式)

1. scaling_driver: amd-pstate-epp

  • amd-pstate:正在使用 AMD 的现代 CPU 驱动。

  • -epp (Energy Performance Preference):这代表驱动正运行在最新的“硬件首选”模式下。

2. status: active

  • 这确认了 amd-pstate 驱动程序正处于活动状态,并以 EPP 模式在工作。

模式对比 (AMD 版)

驱动 amd_pstate (在 "active" 模式下) acpi-cpufreq (旧系统/驱动)
管理方 CPU 硬件 (CPPC) 操作系统 (OS)
最佳性能模式 performance (硬件智能调节) schedutil (软件智能调节)
支持的模式 performance, powersave performance, powersave, ondemand, schedutil

总结: PVE 9.0 内核正确识别了新 CPU,并配置了最佳的驱动。只需要在脚本中选择 1 (performance) 即可获得最佳性能(并且在空闲时自动省电)。

本文来自博客园,作者:舟清颺,转载请注明原文链接:https://www.cnblogs.com/zqingyang/p/19222076

相关新闻

  • KMPlayer下载教程(2025新版)——全功能安装配置与使用经验详解
  • 安卓非原创--基于Android Studio 实现的天气预报App - 教程
  • 2025年全屋定制橱柜优质厂家权威推荐榜单:全屋定制门窗/高端整装定制/整装全屋定制源头厂家精选

最新新闻

  • SuperCom串口调试工具:专业开发者的终极高效调试指南
  • 2026 西安建筑资质升级服务商综合测评 TOP 榜合规代办首选陕西中标企服 - 资讯纵览
  • 靠谱的企业管理咨询公司推荐榜2026 - 资讯纵览
  • GEO 优化服务商哪家落地效果真实可查?2026 五家高口碑机构深度评测 - 小兔崽子cheng
  • Java 明明有 GC,为什么还会 OOM?生产事故引起了一下反思
  • 2026 年北京洋酒高价回收机构甄选:专业鉴定与高溢价变现行业参考 - 资讯纵览

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号