Atom330 の周波数制御 (2009/07/24)
最近のCPUは大抵、CPUを使っていない時は周波数とか電圧を下げて
消費電力を抑える事が出来るんだけど、Atom330はその機能がOFFになっている。
(AtomN系、Z系はEIST対応)
ただ、Pentium4の頃から周波数制御だけは出来たから
Atom330でも出来るはずと思ってたんだけど前に試した時はうまく動かなかった。
久々に調べてみると、cpufreq-add-atom-to-p4-clockmod.patch なる物を発見。
これでAtomでも周波数制御が可能になるらしい。
最新版のカーネル(2.6.30)を落としてきてパッチを当てようとしたらこのパッチがすでに適用されてた。。w
カーネルを再構築して、再起動。
CPUの周波数を見ると、200MHzで動作してる。(元々は1.6GHz)
周波数を負荷に応じて自動的に変えるには、cpuspeed を ondemand モードにする。
と、ここでエラー発生。
よくわからんがondemand モードには出来ないらしい。。
意味なし。
このエラー文を検索してみると、やはり同じエラーに遭遇した先人がいた。
そのページによると
■drivers/cpufreq/cpufreq_ondemand.c
#define TRANSITION_LATENCY_LIMIT (10 * 1000 * 1000)
■arch/x86/kernel/cpu/cpufreq/p4-clockmod.c
policy->cpuinfo.transition_latency = 10000001;"
要するに define で定義してある数より多い数字が指定されちゃってるからエラーが発生しているみたい。
で、その先人は define の値を2倍にしたみたいだけど、
そもそも10000001(=10ms)って数字がデカ過ぎるような。
と思って古いカーネルのソースを見てみると、、
■arch/x86/kernel/cpu/cpufreq/p4-clockmod.c
policy->cpuinfo.transition_latency = 1000000;
やっぱり。。
タイプミスか??
カーネル更新してcpuspeed が動かなくなる人がいっぱいいそうだ。。
ソースを修正して再コンパイル。
起動してみると、ちゃんと 200MHz⇔1.6GHzで段階的に切り替わるようになった。
めでたしめでたし。