9月 302015
 

僕は VMWare ESXi 5.1 上で何個かの FreeBSD/amd64 を動かしているのですが、 9.2-R -> 10.0-R -> 10.1-R と来て、今回いよいよ 10.2-R にしてみました。

しかし、 10.2-RELEASE にした途端 powerd が動かなくなりました。あれ? 9.2-R から 10.1-R まで利用しているときには powerd が動いていて sysctl の dev.cpu.0.freq や dev.cpu.0.freq_levels が見えていたのですが、 10.2-R にした途端に見えなくなりました。おかげで powerd を起動すると以下のような感じ。

# service powerd start
Starting powerd.
powerd: no cpufreq(4) support -- aborting: No such file or directory
/etc/rc.d/powerd: WARNING: failed to start powerd

 
cpufreq.ko はロードしているのに有効になっていないようですね。あたたた。

そもそもハイパーバイザの上で動作する OS では cpufreq は見えないんじゃね? という話があります。例えばさくらの VPS では、その上で動く FreeBSD は powerd は動かないし Virtualbox 上の FreeBSD でも powerd が動かない。 dev.cpu.0.freq_levels が無いからですね。

しかし、 VMWare ESXi ではその上で動作する FreeBSD で cpufreq.ko が有効になって dev.cpu.0.freq_levels が生えてきて powerd が動作します。

powerd が動かないと CPU が最速でブン回って地球に優しくないよねぇ。などと思うので何とかしたいのであります。

 
で、色々調べたり、人に聞いた話だと FreeBSD 10.2-RELEASE ではとあるパラメータが追加になって、物理マシンではない場合には default で disable になったようです。なのでそのパラメータを変更して上げると以前のようになるらしいです。

/boot/loader.conf に以下の行を追加して上げると 10.2-R は 10.1-R の頃のように cpufreq.ko が有効になり dev.cpu.0.freq_levels が生えてきて powerd が動くようになります。

hint.acpi_throttle.0.disabled="0"
hint.p4tcc.0.disabled="0"

 
/boot/device.hints の最後に上記の行が追加になってますね。それも “1” で。これを “0” にすると cpufreq.ko が利用可能な状態になってくれます。

この設定が有効なのは今のところ VMWare ESXi のみのようです。実機では必要ありません。実機では default の設定でも cpufreq.ko が有効になります。
また、上記設定を書いても KVM や Virtualbox では dev.cpu.0.freq_levels が無いままだと思われます。

 
参考になる URL としては https://svnweb.freebsd.org/base?view=revision&revision=276986 を見るのが良いかと思われます。

それにしても VMWare ESXi (僕は 5.1 を利用) で FreeBSD を動かしていたけど 10.2-R にしてから powerd が動かなくなったとお嘆きの方は上記の行を /boot/loader.conf に書いてみることをおすすめします。

 
2015/10/04 加筆
上記の設定は VMWare ESXi のときのみの設定ではなく、物理マシンにおいても有効のようです。 10.2.-RELEASE では default で 1 なので、とりあえず powerd をどうにかしたいとか、 dev.cpu.0.freq_levels で表示される数を増やしたいなどあったら上記の設定を入れて試してみるのも一つの手でアルと思われます。