というわけで今回はサーバーを省電力化してみました。
ぐぐってみるとpowerdというコマンドでCPUの周波数をコントロールして省電力化できるということなので
CPUの周波数をモニタリングするスクリプトを作って早速テストしてみました。
sysctl dev.cpu.0.freq_levelsで調べてみるとこんな感じでした。
sv1# sysctl dev.cpu.0.freq_levels
dev.cpu.0.freq_levels: 2000/89000 1750/77875 1500/66750 1250/55625 1000/44500 75
0/33375 500/22250 250/11125
FreeBSDさんの言い分が正しければ 2GHz時?89000mW->89W だそうです。
な、なんだってーー(AA略
#powerd -a adp -n adp
でテストしてみるとあまり周波数が落ちなかったのでオプションをいじって最適化してみました。
#powerd -a adp -n adp -i 40
で周波数が250MHzまで落ちるようになりましたがすぐに1.5GHzを突破してしまうのでよくありません。
ポーリング時間を長くもしてみましたが今度は周波数が下がらなくなるので無意味でした。
さらにぐぐってみるとpowerd自体を改造する方法が載ってました。
さっそくソースを落として改造しました。
最低周波数と最高周波数のオプションを追加
最低周波数はsysctlでも設定できるので不要ですがめんどくさいので搭載。
最高周波数を設定して1.5GHzに抑えて運用する案を考えました。
これでテスト・・・せっかく2GHzまでいけるのに1.5GHzじゃなんだかなあ・・・
そんなわけでさらに改造することに(ぉぃ
周波数アップ側のアルゴリズム??をいじりました。
負荷が90%を超えると2倍になる設定を破棄して負荷が100%以上の時は100%で計算するようにしました。
テストすると・・・すぐに周波数が落ちる割になかなか上がらない仕様になりました。
キタ━━━━━━(゚∀゚)━━━━━━!!
? _,,….,,_ _人人人人人人人人人人人人人人_
.-“::::::::::::`::..、 >ゆっくりあがっていってね!!! <
ヽ:::::::::::::::::::::::::::`’::.、  ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
|::::::;ノ´ ̄\:::::::::::\_,. -‐ァ
|::::ノ ヽ、ヽr-r'”´ (.__
_,.!イ_ _,.ヘーァ’二ハ二ヽ、へ,_7
::::::rー”7コ-‐'”´ ; ‘, `ヽ/`7
r-‘ァ'”´/ /! ハ ハ ! iヾ_ノ
!イ´ ,’ | /__,.!/ V 、!__ハ ,’ ,ゝ
`! !/レi’ (ヒ_] ヒ_ン レ’i ノ
,’ ノ !'” ,___, “‘ i .レ’
( ,ハ ヽ _ン 人!
,.ヘ,)、 )>,、 _____, ,.イ ハ
某ゲームみたいにふきだしが上がっていくことはありません(笑
これなら最低周波数を250MHzにしても大丈夫な予感。
とりあえずこの設定で様子を見てみることにします。
#powerd -a adp -n adp -i 20
瞬発力の無いもっさり仕様になりましたがまあ大丈夫でしょう。
なお、ワットチェッカーとかは持っていないので効果はわかりません。
Jcode.pm
㌧㌦とかの文字が?に化けるのでソースからインストールしました。
インストール後にJcode.pmの以下の部分を変更して
$USE_ENCODE = ($] >= 5.008001);
変更後
$USE_ENCODE = ($] >= 15.008001);
旧変換システムを使うようにすれば化けないようになります。
副作用がありそうな気もしますがまあ気にしない方向で。
最近のコメント