投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償、寄付歓迎) logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)

★LibreOfficeの導入事例★
詳細について

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★

2009年10月24日土曜日

【Linux CentOS5.3】cpufreqを用いてCPUクロックの変化させる

以下の実験により、cpufreqによってクロックを変化させられるが、
組み込むモジュールによってはVCoreが高くなり発熱が増してしまうことがわかった。結論は、デフォルトのacpi-cpufreqモジュールのままが良いということだった。

下ではその手順を記している。
 
■cpufreqを使うにはCPUに応じたドライバの組み込みが必要


システムの情報を表示
CentOS5.3をわたしは使ってます

[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST 2009 i686 i686 i386 GNU/Linux


システムがはじめから保存しているモジュールファイルの表示
(2.6.18-128.el5 部分は、システムによって異なります↓)
[root@localhost ~]# ls /lib/modules/2.6.18-128.el5/kernel/arch/i386/kernel/cpu/cpufreq/
acpi-cpufreq.ko powernow-k8.ko
p4-clockmod.ko speedstep-centrino.ko


CPU情報を表示。モバイルペンティアムらしい。
[root@localhost ~]# cat /proc/cpuinfo

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 13
model name      : Intel(R) Pentium(R) M processor 2.00GHz
stepping        : 8
cpu MHz         : 1995.189
cache size      : 2048 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe nx up est tm2
bogomips        : 3992.67

◎とりあえず、cpufreqパッケージをインストールします。

[root@localhost ~]# yum install cpufreq-utils


自分のCPUに合うモジュールを上のリストから選んで組み込む。
選んだものがCPUに不適切であれば、エラー文が表示されます。
また、これだけではリブートすると組み込みが解除されるようなので、工夫が必要です。
(/etc/rc.localに記述しておく等する。後で述べる。)

[root@localhost ~]# modprobe p4-clockmod


また、もし、ここで別に次のようなエラーが表示された場合、

FATAL: Error inserting p4_clockmod (/lib/modules/2.6.18-164.15.1.el5/kernel/arch/i386/kernel/cpu/cpufreq/p4-clockmod.ko): Device or resource busy
すでに別のモジュールが組み込まれているということなので、それを一度取り外す必要がある。
現在組み込まれているモジュールを次のコマンドを使って確認する。

[root@localhost ~]# cpufreq-info
cpufrequtils 005: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: acpi-cpufreq  ←この先に組み込まれているモジュールを取り外す
  CPUs which need to switch frequency at the same time: 0
  hardware limits: 800 MHz - 2.00 GHz
  available frequency steps: 2.00 GHz, 800 MHz
  available cpufreq governors: ondemand, userspace, performance
  current policy: frequency should be within 800 MHz and 2.00 GHz.
                  The governor "userspace" may decide which speed to use
                  within this range.
  current CPU frequency is 2.00 GHz (asserted by call to hardware).

acpi-cpufreqが組み込まれているわけは、cpuspeedというデーモンが動作しているためだった。

そこで、このデーモンを使用停止する。

[root@localhost ~]# chkconfig cpuspeed off
[root@localhost ~]# service cpuspeed stop

[root@localhost ~]# /sbin/modprobe -r acpi-cpufreq ←モジュールの取り外し
[root@localhost ~]# /sbin/modprobe p4-clockmod ←改めて、目的のモジュールを組み込む

◎モジュールを組込みの後でCPUの性能について情報表示を行う。
[root@localhost ~]# cpufreq-info

cpufrequtils 005: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: p4-clockmod ←さっき組み込んだドライバ
CPUs which need to switch frequency at the same time: 0
hardware limits: 188 MHz - 1.50 GHz
available frequency steps: 188 MHz, 375 MHz, 563 MHz, 750 MHz, 938 MHz, 1.13 GHz, 1.31 GHz, 1.50 GHz ←モバイルCPUだからなのか188MHzにまでクロックを落とすことができるのだが・・・・・
available cpufreq governors: userspace, performance
current policy: frequency should be within 188 MHz and 1.50 GHz.
The governor "userspace" may decide which speed to use
within this range.
current CPU frequency is 1.50 GHz (asserted by call to hardware).

これでcpufreq-infoが実行できました。

ドライバが正常に動作していることがわかりました。


■負荷に応じたクロックの調整がされるよう設定


/etc/rc.local に、エディタに下のコマンドを付け足し、起動時に自動的に設定されるようにします。
設定したら、リブートします。
#vi /etc/rc.local
/sbin/modprobe p4-clockmod       ←上で既出のモジュールの組み込み
/sbin/modprobe cpufreq_conservative  ←クロック調整用のモジュールの組み込み(※)
/usr/bin/cpufreq-set -g conservative  ←※で組み込んだモジュールを利用するためのコマンド


※クロック調整用のモジュールは、cpufreq_conservative以外にもある。
performance       ←いつも最高クロックで走らせる
cpufreq_powersave   ←いつも最小クロックで走らせる
cpufreq_ondemand   ←負荷に応じてクロックを調整しながら走らせる
cpufreq_conservative ←負荷に応じてクロックをマイルドに調整しながら走らせる
cpufreq_userspace   ←ユーザー定義ファイルに準じてクロックを調整しながら走らせる


■ちゃんとクロックが落ちているかどうか確認

CPUに負荷をかけずにしばらく放っておいてから確認します。



[root@localhost ~]# cat /proc/cpuinfo

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 13
model name      : Intel(R) Pentium(R) M processor 2.00GHz
stepping        : 8
cpu MHz         : 187.500   ← 188MHzにまで落ちているが・・・・
cache size      : 2048 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe nx up est tm2
bogomips        : 3992.67


★クロックは下がったが・・・温度は下がらず・・・

確かに、クロックは落ちているがちっとも温度が下がらない。
sensorsコマンドでCPUの状態を表示させてみた。すると、VCoreが高くなっていることがわかった。

[root@localhost ~]# sensors

p4_clockmodの場合
w83697hf-isa-0290
Adapter: ISA adapter
VCore:     +1.32 V  (min =  +0.91 V, max =  +1.00 V)       ALARM
+3.3V:     +3.33 V  (min =  +3.14 V, max =  +3.47 V)
+5V:       +4.92 V  (min =  +4.76 V, max =  +5.24 V)
+12V:     +11.49 V  (min = +10.82 V, max = +13.19 V)
V5SB:      +5.01 V  (min =  +4.76 V, max =  +5.26 V)
VBat:      +3.26 V  (min =  +2.40 V, max =  +3.60 V)
SYSFAN:      0 RPM  (min = 1328 RPM, div = 4)              ALARM
CPUFAN:      0 RPM  (min = 1328 RPM, div = 4)              ALARM
SYS:         +64°C  (high =   +50°C, hyst =   +37°C)   sensor = transistor   ALARM
CPU:       +79.5°C  (high =   +45°C, hyst =   +30°C)   sensor = diode   ALARM
alarms:
beep_enable:
          Sound alarm disabled

そこで、組み込んだモジュールを取り外し、cpuspeedデーモンを再び動作させてみた。
そうして、CPUの状態を表示させてみる。
[root@localhost ~]# sensors

 acpi-cpufreqの場合
w83697hf-isa-0290
Adapter: ISA adapter
VCore:     +0.96 V  (min =  +0.91 V, max =  +1.00 V) ←電圧が下がった!
+3.3V:     +3.34 V  (min =  +3.14 V, max =  +3.47 V)
+5V:       +4.97 V  (min =  +4.76 V, max =  +5.24 V)
+12V:     +11.49 V  (min = +10.82 V, max = +13.19 V)
V5SB:      +5.03 V  (min =  +4.76 V, max =  +5.26 V)
VBat:      +3.25 V  (min =  +2.40 V, max =  +3.60 V)
SYSFAN:      0 RPM  (min = 1328 RPM, div = 4)              ALARM
CPUFAN:      0 RPM  (min = 1328 RPM, div = 4)              ALARM
SYS:         +63°C  (high =   +50°C, hyst =   +37°C)   sensor = transistor   ALARM
CPU:       +71.0°C  (high =   +45°C, hyst =   +30°C)   sensor = diode   ALARM
alarms:
beep_enable:
          Sound alarm disabled

結論としては、p4_clockmodではなく、acpi-cpufreqのまま使用した方が良いことがわかった。
ただし、クロックはあまり落ちない。
しかし温度こそ低いほうが良い。

acpi-cpufreqが示すCPU情報

[root@localhost ~]# cpufreq-info
cpufrequtils 005: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which need to switch frequency at the same time: 0
  hardware limits: 800 MHz - 2.00 GHz
  available frequency steps: 2.00 GHz, 800 MHz
  available cpufreq governors: ondemand, conservative, userspace, performance
  current policy: frequency should be within 800 MHz and 2.00 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 800 MHz (asserted by call to hardware).

投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad