試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

k10railgunによるK10/K10.5世代のAMD製CPUの電圧下げに関するメモ(バージョン0.801.8a時点・ページ1/3)

AMD製のK10/K10.5世代のCPU(Phenom,Phenom II,Athlon II)の省電力機能ではP-Stateと呼ばれる幾つかの状態にクロック値と電圧値が対応付けられており、OS(のCPUドライバ部分)はこのP-Stateを切り替えることでクロックと電圧を変動させる。また、その(クロックと電圧の)対応一覧はソフトウェアで編集できるようになっており、Windowsではk10statと呼ばれるツールが存在する。
GNU/Linuxではcpufreq(関連記事)のpowernow-k8というCPUドライバがP-Stateの切り替えによってクロックと電圧を変動させるが、(Windowsk10statのように)P-Stateとクロック,電圧の対応一覧を編集することはhellokitty68氏によるk10railgunというツールによって可能で、これにより電圧下げを容易に行うことができる。
もちろん、電圧下げはオーバークロックと同様に定格での運用からは外れるためリスクを伴うことになるが、十分な負荷テストを行って運用することでCPUの消費電力と発熱を下げるというメリットを得ることができる。

powernow-k8との関係

cpufreqで使われるpowernow-k8はクロックと電圧の対応一覧に基づいてP-Stateの切り替えを行い、k10railgunはその対応一覧の内容を編集するものとなる。そのため、powernow-k8モジュールの再読み込みが内部で自動的に行われる。

設定の方針

k10railgunでは各P-Stateにおけるクロック値を電圧と同時に変更することもできるが、ここではクロックは標準のままで電圧だけを下げることにする(電圧下げのみを目的とする)。
手元のAthlon II X3 445の定格のクロックと電圧の値は

Athlon II X3 445の定格のクロックとコア電圧
P-Stateクロックコア電圧(指定/表示値)
03100MHz1325mV
12400MHz1225mV
21900MHz1125mV
3800MHz975mV
となっているが、今回はこれを
設定後のクロックとコア電圧
P-Stateクロックコア電圧(指定/表示値)
03100MHz1238mV
12400MHz1138mV
21900MHz1038mV
3800MHz888mV
のようにすることにする。もっと下げることができる可能性はあるのだが、今回は安心して常用することを目指す方針としたので、緩めに設定することにした。

電圧の設定値について

電圧が定格からどれぐらい下げられるかはWeb上のレビュー記事などをある程度参考にしつつ負荷テストを行いながら試行錯誤して探ることになる。ただ、レビュー記事の負荷テストは常用するには不十分と思われる場合もあるので注意が必要な上、CPUの低電圧耐性には個体差があることも頭に入れる必要がある。上の値についても「X3 445なら絶対に1238mV指定なら3.1GHzでの動作が全く不具合なく安定している」ということを保証するものではなく、もっと下げられる場合もあるかも知れないし、この値で不安定なこともありうる。

限られた状況では設定を突き詰めることもできるが...

通常用いているメインのOS環境とは別にサブ用のOS環境(マルチブートのみ・仮想マシンは不可)を用意して、その中で「出力結果が正しかったのかを後からチェックできる処理」として可逆な圧縮やエンコードを行うなど、リスクに対処しやすい状況においては、更に設定を突き詰めてみるのもいいかもしれない。
ただ、安定動作可能なギリギリの電圧を目指しても見極めるのは難しい上に節約できる電力はリスクに見合わないと個人的には考えており、3ページ目で扱う負荷テストも長い時間行う必要が出てきてしまうため、あまり電圧を下げすぎるのはおすすめしない(代わりに、できるだけ低いクロック/電圧のP-Stateで動かすようにするか、モニタの省電力設定や明るさ,PC自体の使用時間や接続ハードウェアなどを考えるといった別の節電方法をとることを推奨する)。

指定/表示値とセンサ値との間にはズレがある

k10railgunのコア電圧の指定/表示値はlm_sensorsなどで取得できるhwmonのセンサ値との間にズレがあり、手元の環境(マザーボード:A785GMH/128M)においては、1325mV指定に対するセンサの値は1.35V,975mV指定に対するセンサの値は1.00Vのようになっている。