Enhanced Intel SpeedStep Technologyを有効活用する

DN2800MTのCPU(N2800)はネットブック用に近いので、CPUの消費電力をきめ細かく管理できるようです。
FreeBSDでもその機能を利用できるようなので、設定してみました。

何はともあれ、BIOSで Enhanced Intel SpeedStep Technologyを Enableにしておきます。
次にカーネルですが、GENERICなら最初から

# CPU frequency control
device          cpufreq

と入っているので、何も変更する必要はありません。

次に /etc/rc.conf に以下の行を追加します。 FreeBSDのインストーラーで、powerdの有効化を選択していれば、これも自動で入っているはずです。

powerd_enable="YES"

これだけです。 さっそく確認してみましょう。

www# sysctl dev.cpu | grep freq
dev.cpu.0.freq: 199
dev.cpu.0.freq_levels: 1862/2000 1629/1750 1596/1650 1396/1443 1330/1300 1163/1137 1064/950 931/831 798/600 698/525 598/450 498/375 399/300 299/225 199/150 99/75

最初の行が、その瞬間のCPUの周波数です。
周波数の変化を確認したいなら、

www# powerd -v
powerd: using APM for AC line status
load   0%, current freq  931 MHz ( 7), wanted freq  901 MHz
load   8%, current freq  931 MHz ( 7), wanted freq  872 MHz
load   0%, current freq  931 MHz ( 7), wanted freq  844 MHz
load   0%, current freq  931 MHz ( 7), wanted freq  817 MHz
load   0%, current freq  931 MHz ( 7), wanted freq  791 MHz
changing clock speed from 931 MHz to 798 MHz
load   4%, current freq  798 MHz ( 8), wanted freq  766 MHz
load   3%, current freq  798 MHz ( 8), wanted freq  742 MHz
load   0%, current freq  798 MHz ( 8), wanted freq  718 MHz
load   0%, current freq  798 MHz ( 8), wanted freq  695 MHz
・
・
・

ctrl -cでコマンドを終了させます。

昨日の段階では Enhanced SpeedStepを無効にしたままだったので、有効にしてみたらアイドル時(といってもWebサーバーですので、随時リクエストの処理はしているのですが)の消費電力が 16.0Wから 15.4Wに下がりました。

もうちょっと下がるかと思っていたのですが、CPU以外の消費電力が大きいことを実感できました。