不过我已经找到了解决方法. 不是用散热托架, 是从源头上解决问题. 不仅能降温还能延长电池使用时间, 甚至延长CPU使用寿命.
肉测结果(3月初): 以前CPU100%的时候能达到61度以上, 现住运行mprime也只能达到53度了. mprime从此不能产生热情了.
平时使用的温度现住只有40度左右. 以前有时候达到50几度.
电池以前用1小时20分钟, 现住能用1小时35分钟.
警告(WARNING):
该程序可能损坏你的硬件
This program could cause damage to your Hardware!
有两种降低cpu电压的方法.
- 1. 使用cpupowerd(amd专用)
- 2. 使用linux-phc(Intel, amd都可以用)
优点: 1直接用电压值调节, 简单. 2. 不用编译模块
缺点: 只支持amd k8(Athlon, Athlon64 (X2), Sempron, Opteron, Turion ...)
特点: 自带cpu频率调节器, 和cpufrequtils冲突且需要调节.
安装
arch安装直接
代码: 全选
yaourt -S cpupowerd
http://sourceforge.net/projects/cpupowerd
代码: 全选
tar -xzf cpupowerd-x.x.x.tar.gz
cd cpupowerd-x.x.x/src
make
sudo make install
载入msr模块
代码: 全选
sudo modprobe msr
代码: 全选
sudo modprobe powernow_k8
代码: 全选
$sudo cpupowerd -s
cpupowerd 0.1.2
WARNING: This program could cause damage to your Hardware!
Vendor : AMD
Family : K8
Model : 7
Mastercpuid : 0
Affected cpuids : 0
Current voltage (VID) : 0.6750 V (39)
Current frequency (FID) : 800 MHz (0)
Supported frequencies : 800 1600 MHz
下面找出最低电压
由于每个频率可能的最低电压都不一样, 所有要一个频率一个频率地找.
先设置cpu频率为1600MHz
代码: 全选
cpupowerd -F "0|1600"
代码: 全选
cpupowerd -V "0|0.9750"
记下没有死机的最低电压.
然后重启测800MHz的最低电压.
然后用mprime测试能长时间稳定工作的电压.
arch中安装mprime
yaourt -S mprime
ubuntu在这里下
代码: 全选
http://www.mersenne.org/freesoft/
cpupowerd -F "0|800" -V "0|0.6750"
然后用运行mprime, 如果几个小时没有出现错误或死机. 这个电压就没问题了.
如出现问题, 把电压调高一档再运行mprime, 直到找到稳定电压.
还可以做些其他的事情如游戏, 高清. 看系统核不核谐.
生成配置文件
sudo cpupowerd -a /etc/cpupowerd.conf
运行cpupowerd, 使之自动调节CPU频率
代码: 全选
cpupowerd -d -c /etc/cpupowerd.conf
代码: 全选
cpupowerd -d -D 30 -U 80 -c /etc/cpupowerd.conf
编辑/etc/rc.conf
在MODULES=()里添加
powernow-k8 msr
去掉里面的cpufreq*, 如果有的话.
在DAEMONS=()里acpid后添加cpupowerd
如
DAEMONS=(syslog-ng hal alsa @network netfs crond acpid cpupowerd laptop-mode @hddtemp fam)
[*]2. 使用linux-phc(Intel, amd都可以用)AMD K8 VOLTAGES:
----------------
AMD K8所有可能的电压值
如果你不是用的表上面的, cpupowerd会自动用最接近你输入电压的电压档.
The following CPU voltages are available:
1.5500 V 1.1500 V 0.7625 V 0.5625 V
1.5250 V 1.1250 V 0.7500 V 0.5500 V
1.5000 V 1.1000 V 0.7375 V 0.5375 V
1.4750 V 1.0750 V 0.7250 V 0.5250 V
1.4500 V 1.0500 V 0.7125 V 0.5125 V
1.4250 V 1.0250 V 0.7000 V 0.5000 V
1.4000 V 1.0000 V 0.6875 V 0.4875 V
1.3750 V 0.9750 V 0.6750 V 0.4750 V
1.3500 V 0.9500 V 0.6625 V 0.4625 V
1.3250 V 0.9250 V 0.6500 V 0.4500 V
1.3000 V 0.9000 V 0.6375 V 0.4375 V
1.2750 V 0.8750 V 0.6250 V 0.4250 V
1.2500 V 0.8500 V 0.6125 V 0.4125 V
1.2250 V 0.8250 V 0.6000 V 0.4000 V
1.2000 V 0.8000 V 0.5875 V 0.3875 V
1.1750 V 0.7750 V 0.5750 V 0.3750 V
The lowest voltage depends from the CPU Model (production process).
On some older Turion and Sempron CPUs (Model E, Stepping 6) the voltage
can't be set under 1.0750 V because they have a hardware voltage lock
inside. On some mainboards there are problems with undervolting under 0.8V.
AMD has extended the CPU voltage range from 0.8 - 1.55 V to 0.375 - 1.55 V
but some mainboard manufacturers don't implement this extension correctly
what could cause the CPU overvolting above 1.55V!
For CPU Models older than E included the lowest possible voltage is 0.8V!
优点: 支持Intel和AMD(k8)处理器
缺点: 1调节电压值麻烦. 2需要编译模块
特点: 不和cpufrequtils冲突. 可以继续使用ondemand, conservative等模式.
安装
Arch用户如果是Intel处理器
Those patches are tested with
Mobile Centrino,
Atom (N2xx),
Core/Core2 (T and P - Series)
CPU's
They may also be working for other or newer speedstepping Intel CPUs.
代码: 全选
yaourt -S phc-intel
These patches supports undervolting for AMD K8 processors up to family 15. These include:
* AMD X2 processors
* AMD Turion64 processors
* AMD Turion X2 processors, except newer RM-* and ZM-* processors
代码: 全选
yaourt -S phc-k8
http://www.linux-phc.org/forum/viewtopic.php?f=13&t=2
设置每个频率CPU的电压值(以AMD为例)
phc-k8使用fid而不频率, 使用vid而不是电压.
可用上面的cpupowerd -s查看
代码: 全选
Current voltage (VID) : 1.0000 V (22)
Current frequency (FID) : 800 MHz (0)
frequency = 800MHz + (100MHz * fid)
fid = (frequency/100MHz) - 8
电压的公式根据CPU不同而不同. 比如Athlon64 (X2)是第一个公式.
最好通过上面的cpupowerd -s的结果找出正确的公式
代码: 全选
AMD X2 processor:
vid = 16 => voltage = 1550 - 25 * 16 = 1150mV
Vid = 24 => voltage = 1550 - 25 * 24 = 950mV
Turion 64 processor:
vid = 4 => voltage = 1450 - 25 * 4 = 1350mV
Vid = 22 => voltage = 1450 - 25 * 22 = 900mV
代码: 全选
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/phc_fids
8 0
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/phc_vids
22 22
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
8:22 0:22
设置电压(比如用的是Athlon64 (X2))
比如1600MHz用0.8250 800MHz用0.6750V
代码: 全选
sudo su
echo '29 39' > /sys/devices/system/cpu/cpu0/cpufreq/phc_vids
2. 注意顺序, 比如例子中1600MHz是第一个, 800MHz是第二个.
Intel的设置方法应该和AMD类似, 不过我没有测试环境.
这一段是alanfly写的!
补充下intel的cpu配置方法:
intel的cpu调整时跟amd是相反的,vid值越大电压越高,安装好后输入下列命令可以得到默认的vid值:
代码:
cat /sys/devices/system/cpu/cpu0/cpufreq/phc_default_vids
比如我的是
代码:
38 29 23 15
,最左边的最高频率下的vid,15是最低频率下的vid;
找出相应的最低vid值然后写入/etc/rc.local中,双核的就写两行,四核写四行,下面是我找出的最低电压:
代码:
echo 23 19 17 15 > /sys/devices/system/cpu/cpu0/cpufreq/phc_vids
echo 23 19 17 15 > /sys/devices/system/cpu/cpu1/cpufreq/phc_vids
重启安装mprime测试,我就测试了半个多小时(这组电压值win下rmclock降压用了两年所以不必测试那么久),一切正常;
如果测试失败就调高vid重启再测试;
要注意有时vid设置太低了连终端都进不去,我是用u盘维护系统启动调高vid才重新启动系统。
要找出最低工作电压的方法和上面用cpupowerd一样.
有个软件linux-phc-optimize可用自动找出最低电压, 但最好不要用, 在我这里, 运行时它是把电压往上升的.
还有一个图形界面phctool, 也最好不要用, 在我这里只能升高电压.
Arch用户开机自动降低电压
编辑/etc/rc.local
添加下如下面一行
代码: 全选
echo 29 39 > /sys/devices/system/cpu/cpu0/cpufreq/phc_vids
http://wiki.archlinux.org/index.php/PHC
/usr/share/doc/phc-k8/README
/usr/share/cpupowerd/README