Core2 Duo(Tシリーズ) の省電力

作成
2007/08/14 Tue
更新
2007/09/10 Mon

Tipsへ戻る トップへ戻る

概要

 公開用Webサーバ (ettcweb0)が使っているノートパソコン用のCore2 Duo(Tシリーズ) の省電力機構を FreeBSD 6.2 の cpufreq + powerd に制御させて、さらなる低消費電力化を目指します。

考え方

 この公開用Webサーバ (ettcweb0) は、CPU として Core2 Duo(T7600)、OSとして FreeBSD 6.2 Stable を使っています。FreeBSD は、きっちりタスク管理が行われて、仕事がないときにはすぐにアイドルステートに入るので、それだけでも無駄な電力消費が押さえられています。このため対策前の状態でも消費電力は少なく30W強で運用できています。

 FreeBSDは、CPUの動作周波数の変更機構(cpufreq)と電力制御機構(powerd)が用意されているので、これを使うとさらに低消費電力化できます。

 ところが、 Core2 Duo(T7600)と元々の FreeBSD 6.2R の組み合わせではうまく cpufreq と powerd が働いてくれません。以下では、cpufreq と powerd の設定手順について説明します。

設定

 長い前振りをしましたが、手順は以下の通りの数手順です。

  1. FreeBSD 6.2 Stable を新しい物に変更する(再構築する)。
    動作を確認したもの
    2007/08/05 Sun 以降の物
    うまく動作しない事が確認されているもの
    2007/06/04 Mon 以前の物
  2. 試しに手動でロードしてみる。
          kldload cpufreq
          powerd
  3. 動作を確認する。動きを確かめたり、sysctl -a dev.cpu.0.freq で動作周波数の変化を見る。さらに、カーネルのコンパイルなどの高負荷をかけた時に CPU の既定値まで動作周波数が上がることを確認する。Core2 Duo T7600 の場合、2333[MHz]。
  4. うまく動いたら、起動時に組み込まれるようにする。
          /boot/loader.confに追加。
          cpufreq_load="YES"
          /etc/rc.confに追加。
          powerd_enable="YES"
        
  5. 再起動して正しく機能するか確認する。

 以上です。

参考情報

  1. 2007/08/14 Tue の FreeBSD 6.2 Stable では組込時に以下のエラーが出ますが、動いているいるようです。
          est: CPU supports Enhanced Speedstep, but is not recognized.kldload cpufreq
  2. 2007/08/14 Tue の FreeBSD 6.2 Stable では、運用中、kernel log に以下のエラーが出ます。1GHz 帯が鬼門?まだまだ安定しているとは言い難いようです。
          acpi_perf0: Px transition to 1000 failed
          acpi_perf0: set freq failed, err 6
          acpi_perf0: Px transition to 1667 failed
          acpi_perf0: set freq failed, err 6
          acpi_perf0: Px transition to 1000 failed
          acpi_perf0: set freq failed, err 6
          acpi_perf0: Px transition to 1333 failed
          acpi_perf0: set freq failed, err 6
          acpi_perf0: Px transition to 1000 failed
          acpi_perf0: set freq failed, err 6
          acpi_perf0: Px transition to 1667 failed
          acpi_perf0: set freq failed, err 6
          acpi_perf0: Px transition to 1000 failed
          acpi_perf0: set freq failed, err 6req
        
  3. 2007/08/26 Sun の FreeBSD 6.2 Stable では、運用中、kernel log に acpi_perf0 のエラーが出なくなっているように思います。アクセスが増えているので負荷が高まって、低消費電力に入っていないかもしれないので確かめる方法を検討中。以降、アクセスのない時間があっても今日(2007/09/10 Mon)まで発生していません。
  4. 今日現在(2007/08/14 Tue)、当公開サーバ(ettcweb0)のばあい、最低動作周波数は125MHz、最高周波数2333MHzとなるようです。
  5. 発熱は以下の様に変化しました。
    数度下がったグラフ
    19時少し前から powerd 等を有効にしています。時々高い温度になっているのは、高負荷時の動作状況を調べるために、カーネルの再構築を行ったときの物です。
  6. 消費電力は現在測定中です。結果がでしだい 2007/08/14 20:29 の計測後の電力状況として記録します。

Tipsへ戻る トップへ戻る