最低频率最省电最省钱
三部曲:
1
sudo apt install -y cpufrequtils linux-tools-common linux-tools-generic
2
sudo cpupower frequency-set -g powersave
3
cpufreq-info
性能对比
https://blog.csdn.net/ZhangRelay/article/details/157299108
最高性能:800vs3200,这么看还挺线性的……
最佳节能:
ros2@mobile:~$ cpufreq-info cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009 Report errors and bugs to cpufreq@vger.kernel.org, please. analyzing CPU 0: driver: intel_cpufreq CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: 20.0 us. hardware limits: 800 MHz - 3.20 GHz available cpufreq governors: conservative, ondemand, userspace, powersave, performance, schedutil current policy: frequency should be within 800 MHz and 3.20 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency is 797 MHz. analyzing CPU 1: driver: intel_cpufreq CPUs which run at the same hardware frequency: 1 CPUs which need to have their frequency coordinated by software: 1 maximum transition latency: 20.0 us. hardware limits: 800 MHz - 3.20 GHz available cpufreq governors: conservative, ondemand, userspace, powersave, performance, schedutil current policy: frequency should be within 800 MHz and 3.20 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency is 797 MHz. analyzing CPU 2: driver: intel_cpufreq CPUs which run at the same hardware frequency: 2 CPUs which need to have their frequency coordinated by software: 2 maximum transition latency: 20.0 us. hardware limits: 800 MHz - 3.20 GHz available cpufreq governors: conservative, ondemand, userspace, powersave, performance, schedutil current policy: frequency should be within 800 MHz and 3.20 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency is 797 MHz. analyzing CPU 3: driver: intel_cpufreq CPUs which run at the same hardware frequency: 3 CPUs which need to have their frequency coordinated by software: 3 maximum transition latency: 20.0 us. hardware limits: 800 MHz - 3.20 GHz available cpufreq governors: conservative, ondemand, userspace, powersave, performance, schedutil current policy: frequency should be within 800 MHz and 3.20 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency is 797 MHz.你想了解sudo cpupower frequency-set -g powersave中-g(governor,调度器)参数支持的所有 CPU 频率调节模式列表,我会详细说明每个模式的作用、适用场景,以及结合你的 ThinkPad + Ubuntu 环境的使用建议。
一、完整的 CPU 频率调度器模式列表
在 Ubuntu 系统中,cpupower frequency-set -g支持的模式由内核和 CPU 驱动(你的是intel_cpufreq)决定,常见的完整列表如下(不同 CPU / 内核版本可能略有差异):
| 模式名称 | 中文释义 | 核心工作逻辑 | 能耗 / 性能特点 | 适用场景 |
|---|---|---|---|---|
powersave | 节能模式 | 强制 CPU 始终运行在最低硬件频率(优先能耗,牺牲性能) | 能耗最低,性能最差 | 仅文字处理、待机等轻负载 |
performance | 性能模式 | 强制 CPU 始终运行在最高硬件频率(优先性能,牺牲能耗) | 能耗最高,性能最好 | 编译、仿真、重载计算等 |
ondemand | 按需模式 | 低负载时降频,高负载时自动升频(动态调节,Ubuntu 默认) | 能耗 / 性能平衡 | 日常办公、普通开发 |
conservative | 保守模式 | 类似ondemand,但升频 / 降频更平缓(避免频率频繁波动) | 能耗略低于 ondemand,性能稍差 | 对功耗敏感的移动场景(如电池) |
userspace | 用户自定义模式 | 允许用户通过文件手动设置固定频率(需手动指定频率值) | 能耗 / 性能由手动设置决定 | 精准调试、特殊场景定制 |
schedutil | 调度器驱动模式 | 由内核调度器根据任务负载动态调节(比 ondemand 更智能) | 能耗 / 性能平衡更优 | 较新内核(4.14+)的默认模式 |
二、查看你的系统实际支持的模式
不同 CPU / 驱动支持的模式可能不同,你可以通过以下命令查看当前系统可用的所有调度器模式(适配你的 ThinkPad):
bash
运行
# 方式1:查看核心0的支持列表(所有核心一致) cat /sys/devices/system/cpu/cpu0/cpufreq/available_governors # 方式2:通过cpufreq-info查看(更直观) cpufreq-info | grep "available cpufreq governors"从你之前的输出可知,你的系统支持:conservative, ondemand, userspace, powersave, performance, schedutil。
三、模式切换示例(针对你的场景)
bash
运行
# 切换到性能模式(最高频率) sudo cpupower frequency-set -g performance # 切换到Ubuntu默认的按需模式 sudo cpupower frequency-set -g ondemand # 切换到保守节能模式(平缓调节) sudo cpupower frequency-set -g conservative # 切换到智能调度模式(新内核推荐) sudo cpupower frequency-set -g schedutil # 切换到用户自定义模式(需手动指定频率) sudo cpupower frequency-set -g userspace # 手动设置频率(示例:800MHz,需先切到userspace) sudo cpupower frequency-set -f 800MHz四、关键注意事项
- 模式生效范围:
cpupower frequency-set -g xxx默认对所有 CPU 核心生效,无需逐个核心设置; - 临时生效:所有
cpupower命令的修改都是临时的,重启后会恢复默认(如需持久化,需用之前的脚本或 TLP 配置); - 优先级:若你之前用脚本锁定了最大频率(800MHz),即使切换到
performance模式,CPU 也只能运行在 800MHz(最大频率限制优先于调度器)。
总结
- 核心调度器模式共 6 种:
powersave/performance/ondemand/conservative/userspace/schedutil; - 用
cat /sys/devices/system/cpu/cpu0/cpufreq/available_governors可查看系统实际支持的模式; - 你的场景中,
powersave是最低能耗模式,结合最大频率锁定可实现 CPU 完全低功耗运行。
在 Ubuntu 系统中,要让 ThinkPad 锁定 CPU 频率到最低能耗模式,核心思路是限制 CPU 最大频率并切换到节能调度策略,同时可以结合 ThinkPad 专属工具优化电源管理。以下是分步骤的实操方案,覆盖命令行和图形界面两种方式:
一、前置准备:安装必要工具
首先安装 CPU 频率管理和监控工具:
bash
运行
sudo apt update sudo apt install -y cpufrequtils linux-tools-common linux-tools-genericcpufrequtils:用于查询和设置 CPU 频率linux-tools:提供cpupower工具,支持更底层的 CPU 电源控制
二、命令行方式(推荐,精准可控)
1. 查看当前 CPU 频率状态
先确认 CPU 的核心数、可用频率档位和当前策略:
bash
运行
# 查看所有 CPU 核心的当前频率 cpufreq-info # 查看 CPU 支持的最小/最大频率(以核心0为例) cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq # 最小频率(单位:kHz) cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq # 最大频率2. 切换到节能调度策略
Ubuntu 默认的 CPU 调度策略是ondemand(按需调节),切换到powersave策略会强制 CPU 优先运行在最低频率:
bash
运行
# 对所有 CPU 核心设置为 powersave 策略 sudo cpupower frequency-set -g powersave3. 锁定 CPU 到最低频率
通过cpupower强制设置 CPU 最大频率等于最小频率,实现完全锁定:
bash
运行
# 获取最小频率(以核心0为例,单位 kHz) MIN_FREQ=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq) # 对所有核心设置最大频率 = 最小频率 sudo cpupower frequency-set -u $MIN_FREQ4. 验证锁定效果
执行以下命令,确认所有核心频率均稳定在最小值:
bash
运行
watch -n 1 cpufreq-info | grep "current CPU frequency"输出中current CPU frequency应全部等于cpuinfo_min_freq的值。
5. 开机自动生效(持久化配置)
上述设置重启后会失效,需配置开机自启脚本:
- 创建配置文件
bash
运行
sudo nano /etc/init.d/cpu-low-power- 粘贴以下内容(替换
MIN_FREQ为实际值,如800000代表 0.8GHz)
bash
运行
#!/bin/bash ### BEGIN INIT INFO # Provides: cpu-low-power # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Lock CPU to lowest frequency ### END INIT INFO MIN_FREQ=800000 # 替换为你的 CPU 最小频率(kHz) cpupower frequency-set -g powersave cpupower frequency-set -u $MIN_FREQ- 赋予权限并设置开机自启
bash
运行
sudo chmod +x /etc/init.d/cpu-low-power sudo update-rc.d cpu-low-power defaults三、图形界面方式(适合新手)
如果安装了 GNOME 桌面环境,可以通过以下工具可视化配置:
- 安装
cpufreq图形管理工具
bash
运行
sudo apt install -y gnome-tweaks cpufreq- 打开GNOME 调整工具(Gnome Tweaks),进入电源选项卡
- 将CPU 调速器设置为
powersave - 若需锁定最低频率,仍需结合命令行执行
cpupower frequency-set -u $MIN_FREQ(图形工具无法直接设置最大频率上限)
四、ThinkPad 专属优化:利用 TLP 工具
ThinkPad 可以搭配TLP(高级电源管理工具),进一步优化 CPU 能耗,同时兼容上述频率锁定设置:
- 安装 TLP
bash
运行
sudo apt install -y tlp tlp-rdw sudo systemctl enable tlp sudo systemctl start tlp- 编辑 TLP 配置文件,强化节能
bash
运行
sudo nano /etc/tlp.conf修改以下参数:
conf
# CPU 调度策略强制为 powersave CPU_SCALING_GOVERNOR_ON_BAT=powersave CPU_SCALING_GOVERNOR_ON_AC=powersave # 限制 CPU 最大频率(替换为你的最小频率,单位 MHz) CPU_MAX_PERF_ON_BAT=800 CPU_MAX_PERF_ON_AC=800- 重启 TLP 生效
bash
运行
sudo tlp restart五、注意事项
- 性能影响:锁定最低频率后,CPU 性能会大幅下降,仅适合文字处理、浏览网页等轻负载场景,不建议运行 ROS 编译、仿真等重任务。
- 多核心适配:部分 CPU 支持异构核心(如 Intel 大小核),需确保对所有核心(
cpu0-cpuN)都执行频率设置。 - 恢复默认设置:若需解除锁定,执行以下命令
bash
运行
sudo cpupower frequency-set -g ondemand sudo cpupower frequency-set -u $(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq)是否需要我帮你整理一份CPU 频率锁定与恢复的快捷命令脚本,方便你在 ROS 开发中快速切换模式?
灵活切换
你需要的 CPU 频率锁定 / 恢复快捷脚本我已经为你整理好了,这个脚本专门适配 ThinkPad + Ubuntu 环境,支持一键锁定最低能耗模式、一键恢复默认模式,还能实时查看当前 CPU 频率状态,非常适合日常快速切换使用。
一、完整脚本代码
首先创建脚本文件(建议命名为cpu_power_control.sh):
bash
运行
#!/bin/bash # ThinkPad Ubuntu CPU 功耗控制脚本 # 功能:一键锁定最低频率/恢复默认/查看状态 # 检查是否为 root 用户(修改 CPU 频率需要管理员权限) if [ "$(id -u)" -ne 0 ]; then echo "❌ 请使用 sudo 运行此脚本!" echo "示例:sudo ./cpu_power_control.sh lock" exit 1 fi # 获取 CPU 最小/最大频率(自动适配,无需手动修改) MIN_FREQ=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq) MAX_FREQ=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq) # 转换为 GHz 便于阅读(kHz → GHz) MIN_FREQ_GHZ=$(echo "scale=2; $MIN_FREQ / 1000000" | bc) MAX_FREQ_GHZ=$(echo "scale=2; $MAX_FREQ / 1000000" | bc) # 定义核心功能函数 # 1. 锁定到最低频率 lock_low_power() { echo "🔒 正在锁定 CPU 到最低频率($MIN_FREQ_GHZ GHz)..." # 切换到节能调度策略 cpupower frequency-set -g powersave > /dev/null 2>&1 # 强制设置最大频率 = 最小频率 cpupower frequency-set -u $MIN_FREQ > /dev/null 2>&1 echo "✅ 锁定完成!当前 CPU 调度策略:powersave,最大频率限制:$MIN_FREQ_GHZ GHz" } # 2. 恢复默认模式 restore_default() { echo "🔄 正在恢复 CPU 到默认模式(最大频率:$MAX_FREQ_GHZ GHz)..." # 切换回按需调度策略 cpupower frequency-set -g ondemand > /dev/null 2>&1 # 恢复最大频率为默认值 cpupower frequency-set -u $MAX_FREQ > /dev/null 2>&1 echo "✅ 恢复完成!当前 CPU 调度策略:ondemand,最大频率:$MAX_FREQ_GHZ GHz" } # 3. 查看当前状态 check_status() { echo "📊 当前 CPU 状态:" echo "-------------------------" echo "CPU 最小频率:$MIN_FREQ_GHZ GHz" echo "CPU 最大频率:$MAX_FREQ_GHZ GHz" # 获取当前调度策略 CURRENT_GOVERNOR=$(cpufreq-info | grep "governor" | head -1 | awk -F':' '{print $2}' | sed 's/ //g') echo "当前调度策略:$CURRENT_GOVERNOR" # 获取当前实际频率(核心0) CURRENT_FREQ=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq) CURRENT_FREQ_GHZ=$(echo "scale=2; $CURRENT_FREQ / 1000000" | bc) echo "CPU0 当前运行频率:$CURRENT_FREQ_GHZ GHz" echo "-------------------------" } # 命令行参数判断 case "$1" in lock) lock_low_power ;; restore) restore_default ;; status) check_status ;; *) echo "📚 ThinkPad CPU 功耗控制脚本使用说明:" echo "sudo ./cpu_power_control.sh lock - 锁定 CPU 到最低能耗模式" echo "sudo ./cpu_power_control.sh restore - 恢复 CPU 到默认模式" echo "sudo ./cpu_power_control.sh status - 查看当前 CPU 频率/策略状态" exit 1 ;; esac二、使用步骤
1. 赋予脚本执行权限
bash
运行
chmod +x cpu_power_control.sh2. 脚本使用命令(必须加 sudo)
bash
运行
# 一键锁定最低能耗模式 sudo ./cpu_power_control.sh lock # 一键恢复默认模式 sudo ./cpu_power_control.sh restore # 查看当前 CPU 状态(频率/调度策略) sudo ./cpu_power_control.sh status3. 示例输出
- 锁定模式输出:
plaintext
🔒 正在锁定 CPU 到最低频率(0.80 GHz)... ✅ 锁定完成!当前 CPU 调度策略:powersave,最大频率限制:0.80 GHz - 查看状态输出:
plaintext
📊 当前 CPU 状态: ------------------------- CPU 最小频率:0.80 GHz CPU 最大频率:4.70 GHz 当前调度策略:powersave CPU0 当前运行频率:0.80 GHz -------------------------
三、进阶:添加全局快捷命令(可选)
如果想在任意目录直接使用,可将脚本移动到系统命令目录:
bash
运行
sudo mv cpu_power_control.sh /usr/local/bin/cpu-power之后即可在任意目录执行:
bash
运行
sudo cpu-power lock # 锁定 sudo cpu-power restore # 恢复 sudo cpu-power status # 查看状态总结
- 脚本核心功能:
lock锁定最低频率(powersave 策略 + 限制最大频率 = 最小频率)、restore恢复默认(ondemand 策略 + 解锁最大频率)、status查看状态; - 使用前提:必须以
sudo运行(修改 CPU 频率需要管理员权限); - 适配性:脚本自动读取 CPU 最小 / 最大频率,无需手动修改参数,适配所有 ThinkPad 机型。
从你提供的cpufreq-info输出可以看到,你的 ThinkPad CPU 已经处于节能状态但尚未完全锁定—— 当前调度策略是powersave,实际运行频率约 797MHz(接近最低的 800MHz),但系统仍允许频率在 800MHz ~ 3.20GHz 范围内波动。
接下来我会告诉你如何用之前的脚本完成完全锁定,并验证最终效果:
一、执行脚本完成彻底锁定
运行我们之前创建的脚本,一键锁定到最低频率(800MHz):
bash
运行
# 如果你已经将脚本设为全局命令 sudo cpu-power lock # 若未设置全局命令,直接运行脚本文件 sudo ./cpu_power_control.sh lock执行后会输出类似:
plaintext
🔒 正在锁定 CPU 到最低频率(0.80 GHz)... ✅ 锁定完成!当前 CPU 调度策略:powersave,最大频率限制:0.80 GHz二、验证锁定效果
再次执行cpufreq-info或脚本的status命令,检查是否完全锁定:
bash
运行
# 方式1:用脚本查看状态 sudo cpu-power status # 方式2:直接查看核心信息 cpufreq-info | grep "current policy" -A1锁定成功的标志:
输出中会显示current policy: frequency should be within 800 MHz and 800 MHz(最大 / 最小频率均为 800MHz),示例:
plaintext
current policy: frequency should be within 800 MHz and 800 MHz. The governor "powersave" may decide which speed to use within this range.此时 CPU 频率会被强制固定在 800MHz 左右,不会再向上波动。
三、补充说明(针对你的硬件情况)
- 你的 CPU 硬件限制是 800MHz ~ 3.20GHz,脚本会自动识别这个范围,无需手动修改参数;
- 当前显示的 797MHz 是正常波动(系统检测精度问题),锁定后会稳定在 800MHz 附近;
- 若后续需要恢复性能,执行
sudo cpu-power restore即可解锁,CPU 会回到 800MHz ~ 3.20GHz 的正常调节范围。
总结
- 你的 CPU 已处于节能策略,但未完全锁定,执行
sudo cpu-power lock即可完成最终锁定; - 锁定成功的核心标志是「最大 / 最小频率均为 800MHz」;
- 恢复默认只需执行
sudo cpu-power restore,无需手动修改任何参数。
本文介绍了在Ubuntu系统中通过命令行和图形界面两种方式锁定CPU最低频率以实现节能的方法。主要内容包括:1. 安装必要的CPU频率管理工具;2. 使用cpupower命令切换为powersave策略并锁定最低频率;3. 创建开机自启脚本使设置持久化;4. 针对ThinkPad笔记本的TLP电源管理优化配置;5. 提供一键切换脚本支持快速锁定/恢复CPU频率。文中详细说明了6种CPU频率调度模式的特点和适用场景,并给出频率锁定后的性能影响说明,特别适合需要在ThinkPad上实现低功耗运行Ubuntu的用户参考。