Linux で AMD Athlon 64 Cool'n'Quiet をコントロールする

調子にのってcpudccをRubyのアプリケーションとして配布できるようにした。 場所はこっち

尚、文中の画像は九十九電機にアフリエイトの形でリンクしている(こうすれ ば商品画像をトラブルなしに使える)。アフリエイトの形式は右の通り。

[PR]Linkshare
LinkShare

Cool'n'QuietをサポートしているAMD Athlon 64で、かつマザーボードが Cool'n'QuietをしていればLinuxからでもCool'n'Quietをコントロールできた。 忘れない内に書き留めておく。

Linuxサーバにおいて消費電力を減らし、省エネを行い、ランニングコストを 下げる可能性について 考察するメモも書いておきました。

利用環境

  • ASUS K8V-X

  • AMD Athlon 64 3000+ (Socket 754)

    これは以前DFI K8M800-MLVFが途中でCool'n'Quietがうまく動かなくなるので、 代替のために買った。エージングとして2日間動かしてチェックしたが、これ はcpudccにより、うまくCool'n'Quietがコントロールされている。Socket 754 を使っているが、ASUSのA8Vシリーズならうまく動くだろう。尚、BIOSのデフォル トではCool'n'QuietがOFFになっているので、ちゃんとONにしてから使うこと。

    [PR]Athlon64 3200+ (Socket939 Venice)と ASUSTeK A8V-E SE
    iconicon iconicon

    カーネルについて

    modprobeでpowernow-k8をロードしたが、 /sys/devices/system/cpu/cpu0/cpufreq の下のscaling_available_governors はperformanceになっている。scaling_governorの中身を"userspace"に書き換 えようと思っても入らない。 そこでカーネルをコンパイルし、デフォルトのgovernorをuserspaceにする。 ブートするとちゃんと問題なく使えるようだ。 ブート後にscaling_governorをチェックするとuserspaceになっていた。 scaling_available_frequenciesの値をみると、"2000000 1800000 1000000"と 表示される。scaling_cur_freqに値を変えてみる。
     $ cd /sys/devices/system/cpu/cpu0/cpufreq
     $ cat scaling_available_frequencies 
     $ su
     # echo '1000000' > scaling_setspeed
    

    /proc/cpuinfoやscaling_cur_freqをみると、ちゃんと1000000になっている。 ワットチェッカーで消費される電力変化をみてみたが、何もしないと90W前後、 1GHzにクロックを落すと65W前後になる。ちゃんと動いているようだ。

    悪い癖ですぐ俺プログラムを作る

    cpudyndやpowernodなど動的にクロックを変化させるツールがあるが、ちょっ と試してみてもうまくいかなかったので自分でプログラムを作る。自分でも思 うが、ちょっと動かないと自分で作ってしまうのは悪い癖である。まあもっと も自作PCとかやっている時点で悪い癖だと思うが。
    CPUDCCの配布用ページはこちらです。
    プログラムは簡単で、ロードアベレージを見て0.1以下なら最低のクロックへ、 0.1から0.7までは上から2番目のクロックへ、0.7以上なら最高のクロックへ変 化する。デフォルトでは1秒単位で変化させる。変化をもっと早くしたければ、 変数@sleeptime=0.5 (0.5秒毎)とかすれば良い。ただロードアベレージの変化 が1秒ごとなので、更新速度を速くしてもレスポンスが良くなるというわけで はない。
    # ruby cpudcc.rb --verbose
    2005-07-25 12:45:10 Start:      2000000Hz 
    2005-07-25 12:45:10 Change:     1000000Hz (count:1)
    ....
    
    
    ちなみに--testmodeはクロックを変えてくれるかどうかのテストで、20秒に一 回ランダムに変化する。ただし、選んだクロックすうが前とクロック数ならば 変更はしない。
    # ruby cpudcc.rb --testmode
    

    まとめ

    サーバなどでCooln'Quietを上手に使うと、無駄な消費電力が減り良いのでは ないかと思う。地球温暖化対策にもってこいだ。

    cpudccはプロセッサーに依存しないはずなので、AthlonのCool'n'Quiet や PentiumのSpeedStepなどが使えるLinux環境でこのプログラムを動かす人柱が いたらよろしく報告お願いします。


    DFI K8M800-MLVFの問題

    古い話題 (2005-09-21)

  • DFI K8M800-MLVF

  • AMD Athlon 64 (ADA3000AXBOX)

    これは「AMD Athlon 64 らくらくキット」というCPU + MB + メモリがワンセッ トになっている”ぬるい”ものを買ってきた。CPU がNewCastle (Socket754) でマザーボードがCool'nQuiteをサポートしているし、相性の問題ないだろう と思って購入した。でもLinuxではSATAディスクへのインストールをするとブー トできなかった。何か癖があるらしい。スタンダードにIDEディスクをつなぎ Debian GNU/Linux Srageをインストールする。 始めはうまく変化しているのだが、1時間もたつと、scaling_setspeedの変更 がきかなくなる。カーネルでメッセージを出すようにしてコンパイルしなおし syslogを見てみる。

    Jul 25 13:30:55 myhost kernel: powernow-k8: failing targ, change pending bit set
    
    ソースコードをみると、このpending bitは少なくともマザーボードかプロセッ サから値がかえってきており、カーネル側で何かしているわけではなさそうだ。 何の問題かはわからぬが、少なくともこのMBとCPUの組合せでは、エラーにな る。googleでの情報では解決つかなかった。

    Linuxユーザに限らずCool'n'Quietを動的に使っているようでもないし、またサ ポートしているMBも少数派なので、いったいどのレベルでのバグなのか切り分 けするための情報が少なすぎて対応できない。 同じマザーボードではまっている人がいたらしく、こっちのページを参照して いた。

  • http://www.mail-archive.com/debian-amd64@lists.debian.org/msg11642.html

    さっそく、このJohn Belmoteという人とメールで少しやりとりしたのだが、 やっぱりがダメなようだ。ちなみにこの一連のML議論の中で出ていたASUS K8V-X はうまく動くようだ。


    目次へ

    すずきひろのぶ Hironobu SUZUKI < hironobu -at- h2np -dot- net >

    $Id: cpudcc.html,v 1.6 2005/09/21 02:34:02 hironobu Exp hironobu $