警告!除了我自己之外,这个程序未经测试,可能会损坏您的硬件!使用风险自负。
================== undervolt |travis|
.. |travis| image:: https://travis-ci.org/georgewhewell/undervolt.svg :target: https://travis-ci.org/georgewhewell/undervolt :alt: 构建状态
undervolt 是一个用于在 Linux 下对 Intel CPU 进行降压的程序。它的工作方式类似于 Windows 程序 ThrottleStop(即使用 MSR 0x150
)。您可以对 5 个电压平面之一应用固定的电压偏移,覆盖系统的温度目标(CPU 将在达到此温度时降频),并调整系统的短期和长期功耗预算(时钟频率和电压将被调整以保持这些时期内的总功耗低于配置的限制)。
更多信息请阅读
这里 <https://github.com/mihic/linux-intel-undervolt>
_。
安装
从 PyPi 安装::
$ pip install undervolt
从源代码安装::
$ pip install git+https://github.com/georgewhewell/undervolt.git
注意自定义内核用户:必须在内核选项中启用 'msr' 模块("CONFIG_X86_MSR")(处理器类型和特性 -> 特定型号寄存器支持)
示例
读取当前偏移::
$ undervolt --read
温度目标: -25 (75C)
核心: -110.35 mV
GPU: -49.8 mV
缓存: -110.35 mV
非核心: -59.57 mV
模拟IO: -59.57 mV
功率限制: 35.0W (短期: 1.0s - 已启用) / 35.0W (长期: 1.0s - 已启用)
睿频: 已启用
对 CPU 核心和缓存应用 -100mV 偏移:
$ undervolt --core -100 --cache -100
对 GPU 应用 -75mV 偏移,对所有其他平面应用 -100mV:
$ undervolt --gpu -75 --core -100 --cache -100 --uncore -100 --analogio -100
将温度目标设置为 97C:
$ undervolt --temp 97
将功率限制 1 设置为 35W,10秒:
$ undervolt -p1 35 10
禁用 Intel 睿频:
$ undervolt --turbo 1
生成命令以重现您的 Throttlestop 设置::
$ undervolt --throttlestop ThrottleStop.ini --tsindex 3
undervolt --core -100.5859375
$ undervolt --throttlestop ThrottleStop.ini
undervolt --core -125.0 --gpu -125.0 --cache -125.0
用法
.. code-block::
$ undervolt -h
用法: undervolt.py [-h] [--version] [-v] [-f] [-r] [-t TEMP]
[--temp-bat TEMP_BAT] [--throttlestop THROTTLESTOP]
[--tsindex TSINDEX] [-p1 POWER_LIMIT TIME_WINDOW]
[-p2 POWER_LIMIT TIME_WINDOW] [--lock-power-limit]
[--core CORE] [--gpu GPU] [--cache CACHE]
[--uncore UNCORE] [--analogio ANALOGIO]
可选参数:
-h, --help 显示此帮助信息并退出
--version 显示程序版本号并退出
-v, --verbose 打印调试信息
-f, --force 允许设置正偏移
-r, --read 读取现有值
--turbo 更改 Intel 睿频功能状态(1 为禁用,0 为启用)
-t TEMP, --temp TEMP 设置交流电源下的温度目标(如果未使用 --temp-bat,
也适用于电池供电)
--temp-bat TEMP_BAT 设置电池供电时的温度目标
--throttlestop THROTTLESTOP
从 ThrottleStop 提取值
--tsindex TSINDEX ThrottleStop 配置文件索引
-p1 POWER_LIMIT TIME_WINDOW, --power-limit-long POWER_LIMIT TIME_WINDOW
P1 功率限制 (W) 和时间窗口 (s)
-p2 POWER_LIMIT TIME_WINDOW, --power-limit-short POWER_LIMIT TIME_WINDOW
P2 功率限制 (W) 和时间窗口 (s)
--lock-power-limit 锁定设置的功率限制。一旦锁定,在下次重置(例如重启)
之前无法修改。
--core CORE 偏移 (mV)
--gpu GPU 偏移 (mV)
--cache CACHE 偏移 (mV)
--uncore UNCORE 偏移 (mV)
--analogio ANALOGIO 偏移 (mV)
开机自动运行(systemd)
首先,创建一个单元文件 /etc/systemd/system/undervolt.service
,
内容如下,将参数替换为您自己的偏移值::
[Unit] Description=undervolt After=suspend.target After=hibernate.target After=hybrid-sleep.target
[Service] Type=oneshot
如果您全局安装了 undervolt(通过 sudo pip install):
ExecStart=/usr/local/bin/undervolt -v --core -150 --cache -150 --gpu -100
如果您想从源代码运行:
ExecStart=/path/to/undervolt.py -v --core -150 --cache -150 --gpu -100
[Install] WantedBy=multi-user.target WantedBy=suspend.target WantedBy=hibernate.target WantedBy=hybrid-sleep.target
检查您的脚本是否正常工作::
$ systemctl start undervolt
现在您可以启用 undervolt 服务::
$ systemctl enable undervolt
或者,如果您遇到设置持久性问题,创建一个定时器 /etc/systemd/system/undervolt.timer
以定期触发任务: ::
[Unit] Description=应用降压设置
[Timer] Unit=undervolt.service
开机后等待 2 分钟再首次应用
OnBootSec=2min
每 30 秒运行一次
OnUnitActiveSec=30
[Install] WantedBy=multi-user.target
现在启用并启动定时器::
$ systemctl enable undervolt.timer $ systemctl start undervolt.timer
通过包含 OnBootSec 命令,设置不会立即应用。 如果您设置了过于激进的偏移值,您将有一小段时间来 禁用定时器,以防它使您的系统崩溃::
$ systemctl stop undervolt.timer
现在您可以编辑 undervolt.service
再重新启动定时器。
开机自动运行(runit)
首先,为服务创建一个目录::
$ sudo mkdir -p /etc/sv/undervolt
然后在该目录中创建一个名为 "run" 的文件,并编辑它包含以下内容::
#!/bin/sh undervolt --core -85 --uncore -85 --analogio -85 --cache -85 --gpu -85 sleep 60
将偏移值替换为您自己的。然后将文件标记为可执行::
$ sudo chmod a+x /etc/sv/undervolt/run
然后启用服务::
$ sudo ln -s /etc/sv/undervolt /var/services/
硬件支持
降压应该适用于 Haswell 之后的任何 CPU。 ================================== ========= ========== 系统 CPU 是否工作? ================================== ========= ========== 宏碁Aspire 7 (A715-71G) i5-7300HQ 是 宏碁Aspire E 15 (E5-575G) i5-7200U 是 宏碁Nitro 5 i5-7300HQ 是 宏碁Nitro 5 (An515-52) i5-8300H 是 宏碁Predator (PH315-51) i7-8750H 是 宏碁Swift 7 (SF714) i5-8200Y 是 华硕FX504GE i7-8750H 是 华硕GL703GE i7-8750H 是 戴尔G5 i7-8750H 是 戴尔G5 5590 i7-9750H 是 戴尔Inspiron 5577 i7-7700HQ 是 戴尔Inspiron 7560 i7-7500U 是 戴尔Latitude 3301 i5-8265U 是 戴尔Latitude 5400 i7-8665U 是 戴尔Latitude 5480 i5-6300U 是 戴尔Latitude 7390 i7-8650U 是 戴尔Precision 5530 i9-8950HK 是 戴尔Precision 7530 i9-8950HK 是 戴尔Precision 7730 E-2176M 是 戴尔Precision 7740 E-2286M 是 戴尔Precision M3800 i7-4712HQ 是 戴尔XPS 13 9343 i5-5200U 是 戴尔XPS 13 9350 i7-6560U 是 戴尔XPS 13 9360 i7-7560U 是 戴尔XPS 15 7590 i7-9750H 是 戴尔XPS 15 7590 i9-9980HK 是 戴尔XPS 15 9530 i7-4712HQ 是 戴尔XPS 15 9550 i7-6700HQ 是 戴尔XPS 15 9560 i7-7700HQ 是 戴尔XPS 15 9570 i9-8950HK 是 戴尔XPS 15 9575 i7-8705G 是 惠普Omen 17-an061ur i7-7700HQ 是 惠普Spectre X360 i7-8809G 是 惠普Zbook Studio G5 i7-8750H 是 英特尔NUC7i3BNK i3-7100U 是 联想AIO Y910 27ISH i7-6700 是 联想IdeaCentre Q190 1017U 否 联想Thinkpad T430 i7-3610QM 否 联想Thinkpad T440p i5-4300M 是 联想Thinkpad T470p i7-7700HQ 是 联想Thinkpad T470p i7-7820HQ 是 联想Thinkpad T470s i5-7300U 是 联想Thinkpad T480s i5-8250U 是 联想Thinkpad T490 i5-8265U 是 联想Thinkpad X1 Carbon i7-6600U 是 联想Thinkpad X1 Extreme i7-8750H 是 联想Thinkpad X1 Extreme Gen 2 i7-9750H 是 联想Thinkpad x250 i7-5600U 是 联想X1 Gen 5 i7-7500U 是 联想X1 Yoga Gen 2 i7-7600U 是 联想Yoga 920 i7-8550U 是 微星GE60 2QD Apache i7-4720HQ 是 微星GP73 Leopard 8RF i7-8750H 是 MacBook Air 2015年末 i5-5250U 是 MacBook Air 2013年中 i5-4250U 是 东芝Chromebook 2 N2840 否 ================================== ========= ==========
故障排除
-
核心或缓存偏移量无效。 无法为CPU核心和缓存设置不同的偏移量。CPU将采用两者中较小的偏移量,并将其应用于CPU和缓存。如果尝试设置不同的偏移量,将显示警告消息。
-
OSError: [Errno 1] 操作不允许
首先尝试使用sudo
运行。如果错误仍然存在,您的系统可能以安全启动模式启动。在这种情况下,Linux内核将阻止用户空间程序(即使是root用户)写入CPU的特定模型寄存器。在系统BIOS中禁用UEFI安全启动,错误应该会消失。 -
降压无效 - 您的设备BIOS可能阻止了它。查看wiki(https://github.com/georgewhewell/undervolt/wiki)以找到您硬件的相关说明。
图形用户界面
这里还有一个用Java编写的小型图形界面:https://github.com/zmalrobot/JavaLinuxUndervolt
它允许您设置每个值(核心、GPU、缓存、非核心、模拟IO,尚未实现温度目标),保存配置文件,加载配置文件并重置值。
致谢
本项目是对以下资源中他人工作的简单封装:
- https://github.com/mihic/linux-intel-undervolt
- http://forum.notebookreview.com/threads/undervolting-e-g-skylake-in-linux.807953
- https://forums.anandtech.com/threads/what-controls-turbo-core-in-xeons.2496647
非常感谢所有贡献者。