マルチコアCPU環境におけるcpufreqdの動作に関するメモ(後半・2010/11/12現在)
「マルチコアCPU環境におけるcpufreqdの動作に関するメモ(前半・2010/11/10現在)」の続き。見出し「プロファイル自動切り替えモード(非マニュアルモード)におけるコアごとのプロファイル割り当て」における続きとなる。
同一のプロファイルを2つ以上のコアに指定したい場合
同一のプロファイル名を2つ以上のコアに指定しようとしてもうまくいかないが、同じ内容のプロファイルを別名で作成してそれぞれ指定することはできる。ただ、同時に適用させたいコアの数だけ必要になるので、その数が多い場合は問題になるかもしれない。下は3コアCPUで800MHz固定(クロックの最大値と最小値が同一なのでgovernorはどれでも同じだが、用途からpowersaveとした)のプロファイルを同時に2つのコアで用いる場合の設定例の一部となる。
[一部]ファイル名: /etc/cpufreqd.conf
[Profile] name=ps_800 minfreq=800000 maxfreq=800000 policy=powersave [/Profile] [Profile] name=ps_800_2 minfreq=800000 maxfreq=800000 policy=powersave [/Profile] [Rule] name=[ルール名] cpu_interval=[ルール適用対象の最小CPU使用率]-[ルール適用対象の最大CPU使用率] programs=[動かすとこのルールが適用されるようにするコマンドの名前...] profile=CPU0:ps_800;CPU1:ps_800_2;CPU2:[別のプロファイル名] [/Rule]
もちろん、(コア数に関係なく)全てのコアで同一のプロファイルを用いるようにしたいのであれば
profile=ps_800
のように1つのプロファイル名を指定するだけでよい。
コアごとに異なるプロファイルを割り当てることの実用性について
コアごとのプロファイル割り当てでクロック範囲の異なるものが混ざっていると- 特定のコアだけクロックが上がるようにする
- 特定のコアだけ低いクロックで動かす
といったことができるが、こうした動作を要求する場面はCPUを普通に使っている限りにおいてはあまりなく、CPUのコア電圧(Vcore)はクロックの一番高いコアに合わせられる(hwmonの出力を見て判断)ということもあるので、省電力目的で効果がどれほどあるのかについては不明。例えば、3コアのCPUで各コアのクロックがそれぞれ「800MHz/800MHz/1900MHz」の状態と「1900MHz/1900MHz/1900MHz」の状態はともにコア電圧は同じになるが、前者のほうが省電力になるのかどうかというのはそれぞれにおける実際の消費電力を(低負荷時・高負荷時ともに)測定してみないと分からない。
関連:マルチコアCPU環境におけるcpufrequtilsのcpufreq-setの動作について
(cpufreqdのようなデーモンを経由した操作ではなく)cpufreqの仕組みに直接アクセスするcpufrequtilsのcpufreq-setコマンド(実行には管理者権限が必要)は、そのままでは0番のCPUコアにのみ操作を行い(manページにもこの動作に関する記述がある)、--cpu [CPU番号(0から)](-c [CPU番号])オプションを付けることで任意のCPUコアに対して操作を行うことができる。例えば、2番のCPUコアのgovernorを「performance」に切り替える場合
$ sudo cpufreq-set -c 2 -g performance
とする。
使用したバージョン:
- cpufreqd 2.4.2
- cpufrequtils 007