つい最近、自宅のストレージ環境をNAS4FreeからFreeNASに変更しました。
使い始めて気がついたのですが、以下のところにあるPowedの設定項目があるのですがちょっと動作できになることがありました。
設定>高度な設定>Enable powerd (Power Saving Daemon):
FreeBSDには全く詳しくないのですが、とりあえずUbuntuなどでいうCPUfreqというものと同じようなものだと思っております。

確認環境
今回使用している筐体は、
CPU: Intel(R) Xeon(R) CPU L5520 @ 2.27GHz (2266.80-MHz K8-class CPU) Origin = "GenuineIntel" Id = 0x106a5 Family = 0x6 Model = 0x1a Stepping = 5
実際の現象
のものなのですが、動作クロックを調べてみると以下のように上限で高止まりしていました。
[[email protected]] ~# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 2267
[[email protected]] ~# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 2267
[[email protected]] ~# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 2267
[[email protected]] ~# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 2267
[[email protected]] ~# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 2267
[[email protected]] ~# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 2267
ちなみにPowerdはFreeNAS上から有効にし、実際にプロセスが起動していることも確認済みです。
[[email protected]] ~# ps auxww | grep powerd
root 4054 0.0 0.0 12036 1684 ?? Ss Fri12AM 4:18.20 /usr/sbin/powerd
root 1373 0.0 0.0 16268 1956 0 S+ 4:55AM 0:00.00 grep powerd
手動で確認
これはオカシイと思い、幾つかのWebサイトを確認したところ、以下のオプションを与えることでPowerdを制御できることが分かったので、明示的に与えて実行するようにしてみました。
/usr/sbin/powerd -a adp -n adp
モードとして設定できるパラメータはいくつかあるようです。
The powerd utility monitors the system state and sets various power control options accord- ingly. It offers three modes (maximum, minimum, and adaptive) that can be individually selected while on AC power or batteries. The modes maximum, minimum, adaptive and hiadap- tive may be abbreviated max, min, adp, hadp.
http://www.unix.com/man-page/FreeBSD/8/POWERD/
設定を試してみた
今回はバランス重視とされるadaptiveを設定することにしました。
で、その結果は以下のとおりです。
[[email protected]] ~# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 800
[[email protected]] ~# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 400
[[email protected]] ~# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 400
[[email protected]] ~# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 400
[[email protected]] ~# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 800
[[email protected]] ~# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 2000
[[email protected]] ~# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 1600
[[email protected]] ~# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 1200
[[email protected]] ~# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 600
[[email protected]] ~# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 400
動的にCPUクロックが制御されていることが分かります。
Powerdにパラメータを渡すことで正常に動作していることは確認できたので、今回の問題がFreeNASの設定の問題なのか、将又組み合わせの問題なのか、気になるところです。
まぁとりあえずPowerdが正常に動作することが分かって良かったです。
今はワークアラウンドとして、Post initに「/usr/sbin/powerd -a adp -n adp」を書くことで、起動時からPowerdを有効にするようにしました。
とりあえずFreeNASのフォーラムに報告するか検討中です。
参考情報
