boco 发表于 2005-5-16 04:09:27

请问如何让CPU在空闲时自动挂起

系统为fc3,运行正常,就是本本的风扇转个不停,但CPU占用率几乎为0。
而以前在win2000下,只要CPU闲置,风扇几乎每隔一两分钟才转上一小会儿。
所以请问怎么让linux像win2000一样在CPU空闲时执行挂起指令以减少散热?
多谢多谢!

erzhong 发表于 2005-5-16 04:12:00

你是笔记本吗?什么cpu?有没有加载speedstep/powernow之类的内核驱动模块?有没有运行cpufreqd之类的根据负载改变cpu频率的程序?

boco 发表于 2005-5-16 04:15:03

你是笔记本吗?什么cpu?有没有加载speedstep/powernow之类的内核驱动模块?有没有运行cpufreqd之类的根据负载改变cpu频率的程序?

是笔记本,P4 2.0G。
装好fc3后什么都没做的系统。
需要编译内核吗?

erzhong 发表于 2005-5-16 06:13:46

你需要加载对应Mobile P4的speedstep内核模块,安装cpufreqd之类的控制程序。如果你安装的内核里有这相应的模块,就没必要重新编译内核。
lsmod看看结果里有没有speedstep之类,或者是p4-clockmod之类。
我在网上查到,P4对应的内核模块好像是p4-clockmod,要加载这个模块,并且安装cpufreqd之类的控制程序东西。

我用的是Ubuntu5.04,笔记本cpu是Pentium M 1.7GHz,控制cpu频率的内核模块是speedstep-centrino。似乎是系统自己认出来并自动加载的。cpu频率是由powernowd管理的。原来在使用Mandrake10.1时,是在/etc的某个内核模块配置文件里加上这个,然后安装cpufreqd,设置好后,在mandrake控制中心里让这个服务在开机时自动运行。

我没用过FedoraCore,所以也不知道FedoraCore的内核模块加载是在那里设置的。你得自己查查。cpufreqd应该会有为Fedora打的包。装好之后你看看它的说明文档,配置还是比较简单的。

boco 发表于 2005-5-16 18:27:35

谢谢!
开始用lsmod查不到相关模块,后来重新编译内核(2.6.11.6),把speedstep和cpufreqd都加上去了,
但结果lsmod还是查不到,而且运行新内核好像也是风扇转的厉害:
Module                  SizeUsed by
autofs4                148520
ipt_REJECT            56321
ipt_state               16641
ip_conntrack         358961 ipt_state
iptable_filter          23041
ip_tables            176643 ipt_REJECT,ipt_state,iptable_filter
nls_utf8                17921
nls_cp936             1263361
vfat                   110081
fat                  349721 vfat
button                  50080
battery               76840
asus_acpi               96200
ac                      34600
ohci1394               297000
ieee1394               876041 ohci1394
ohci_hcd               181840
snd_intel8x0         279680
snd_ac97_codec         714161 snd_intel8x0
snd_pcm_oss            473920
snd_mixer_oss          168961 snd_pcm_oss
snd_pcm                765523 snd_intel8x0,snd_ac97_codec,snd_pcm_oss
snd_timer            197161 snd_pcm
snd                  437486 snd_intel8x0,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer
soundcore               68801 snd
snd_page_alloc          74282 snd_intel8x0,snd_pcm
sis900               170280
ext3                  1136723
jbd                  467441 ext3

erzhong 发表于 2005-5-16 22:31:15

我不知道FC3自带的内核是什么样的,不过一版新发行版的内核里都应该有这类的模块。起码Mandrake和Ubuntu都有。

你的cpu是p4,所以speedstep-centrino不是给你的cpu用的,而是给pentium m的cpu用的。P4用的好象是是p4-clockmod。cpufreqd应该有为FC3做的rpm包。Mandrake和Ubuntu都有这个包。

多用google搜索一下吧。当年我的T23的speedstep就是google搜索装好的。而且这样装好后,以后其他这类问题就很好解决了。

boco 发表于 2005-5-17 14:44:01

谢谢!
我已经把p4-clockmod、speedstep_smi、cpudyn加载上了,又添加了 gnome-cpufreq-applet,能看到cpu工作在60%-100%之间自动调整。
可是风扇还是停不下来,我明明把“make cpu idle call when idle”编进了内核啊?为什么没有作用呢?
另外,请问如何把cpu固定在60%的工作频率下?多谢多谢!

erzhong 发表于 2005-5-18 00:58:45

如果你想让cpu固定在一个频率,那就必要用cpudyn。用google查一下,似乎是在/sys/devices/system/cpu/cpu0/下面,用echo的命令直接改。你可以在网上查一下,具体针对FedoraCore3的命令该是什么样的。
至于风扇,似乎和你的系统温度和风扇管理有关。你看一下/proc/acpi/thermal_zone/THM0/,用cat看一下里面各个文件的值,再在网上查查吧。
比如我的机器
cat /proc/acpi/thermal_zone/THM0/temperature
结果是
temperature:             40 C
cat /proc/acpi/thermal_zone/THM0/cooling_mode
结果是<setting not supported>
cooling mode:   passive
我的笔记本的风扇管理是有IBM的内嵌管理芯片管理的,与操作系统无关。内嵌管理芯片自动根据系统温度控制风扇转速。你的笔记本是什么样的,你得自己查查。还有,如果你能够通过操作系统管理风扇运作,一定要小心。温度过高对系统可是很危险的。

boco 发表于 2005-5-18 04:36:48

我在系统上运行结果是这样:
cat /proc/acpi/thermal_zone/THRM/temperature
temperature:             42 C
cat /proc/acpi/thermal_zone/THRM/cooling_mode
<setting not supported>
cooling mode:   active
好像都没问题:)

又设定了echo 1200 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
这下cpu终于停在了1.2G上,活活
而且出人意料的是风扇也正常了,和win2000上一样,每隔近两分钟才转一次:)
呵呵,好开心,没想到这么快就能让linux在本本上安定了
实在非常非常感谢erzhong兄的指点:)
页: [1]
查看完整版本: 请问如何让CPU在空闲时自动挂起