cpufreqd

cpufreqdについて

システム上の各種情報を用いて自動的にcpufreqのプロファイル(ポリシー/動作モードの2要素の組み合わせ)を切り替えるデーモンで、プロファイルは設定により(任意のグループのメンバのみ)手動切り替えもできる。

使い方次第で高い省電力効果を得られるが、きちんと設定を行うことが欠かせない。

[注記]メモ

コンピュータの使い方によってはこのプログラムを用いなくてもondemandやconservativeのモードにしておけば十分な省電力効果を得られる。cpufreqdを使うと、プロファイルの自動もしくは手動での切り替えによって柔軟な動作をさせることができる。

設定ファイル

設定項目の説明を兼ねた設定例を貼り付ける。

例42 cpufreqdの設定ファイルの例

ファイル名: /etc/cpufreqd.conf

## 全般設定
[General]
pidfile=/var/run/cpufreqd.pid
# 情報取得/ルール検討の間隔[回/秒]
poll_interval=4
# プロファイル自動/手動のモード切り替えと手動プロファイル変更を可能にする
enable_remote=1
# 上記操作を許可するUNIXグループ
remote_group=wheel
# 出力詳細度(通常は0)
verbosity=0
[/General]

## プロファイル定義
[Profile]
# 識別名
name=ondemand min-low
# 周波数の最小値(kHz単位)・パーセンテージ指定も可能だが使いにくいかも
minfreq=1000000
# 周波数の最大値
maxfreq=1800000
# (ondemand/conservativeのみ)クロックを上げるのに必要なCPU使用率
up_threshold=70
# 本プロファイルで用いる動作モード(governor)
policy=ondemand
[/Profile]

## 普段あまり使用しないプロファイルも手動切り替え向けに用意しておくと便利
[Profile]
name=ondemand min-mid
minfreq=1000000
maxfreq=2000000
up_threshold=70
policy=ondemand
[/Profile]

[Profile]
name=ondemand min-max
minfreq=1000000
maxfreq=2200000
up_threshold=70
policy=ondemand
[/Profile]

[Profile]
name=ondemand low-max
minfreq=1800000
maxfreq=2200000
up_threshold=70
policy=ondemand
[/Profile]

[Profile]
name=conservative min-low
minfreq=1000000
maxfreq=1800000
up_threshold=70
# (conservativeのみ)クロックを下げるために(下回ることが)必要なCPU使用率
# これよりCPU使用率が高いとクロックは下がらない
down_threshold=40
# (conservativeのみ)変動ペース・クロック周波数の最大値に対するパーセンテージ
# 低いと少しずつ、高いと急に変動する
freq_step=20
policy=conservative
[/Profile]

[Profile]
name=conservative min-mid
minfreq=1000000
maxfreq=2000000
up_threshold=70
down_threshold=40
freq_step=20
policy=conservative
[/Profile]

[Profile]
name=conservative min-max
minfreq=1000000
maxfreq=2200000
up_threshold=70
down_threshold=40
freq_step=20
policy=conservative
[/Profile]

[Profile]
name=conservative low-max
minfreq=1800000
maxfreq=2200000
up_threshold=70
down_threshold=40
freq_step=20
policy=conservative
[/Profile]

## クロック固定のプロファイルの例
[Profile]
name=fixed min
minfreq=1000000
maxfreq=1000000
policy=powersave
[/Profile]

[Profile]
name=fixed low
minfreq=1800000
maxfreq=1800000
policy=powersave
[/Profile]

[Profile]
name=fixed max
minfreq=2200000
maxfreq=2200000
policy=performance
[/Profile]

## ルール定義
## ここに記述した条件を満たしていくと「スコア」が上がり
## 最もスコアの高いルールにより使用プロファイルが決められる
# 最低クロックで快適に動作するがCPU使用率100%のものに対してクロック下げ
[Rule]
name=fixed min
# CPU使用率範囲が指定範囲内ならスコアUP
cpu_interval=0-100
# 該当するコマンド名のプロセスが動いていればスコアUP
programs=program1,program2,program3
# 本ルールが適用されたときに自動的に用いられるプロファイル
profile=fixed min
[/Rule]

# 最低クロックよりは高いクロックが必要だが常に100%というわけではないもの
[Rule]
name=conservative min-low
cpu_interval=0-100
programs=program4,program5
profile=conservative min-low
[/Rule]

# 最低クロックよりは高いクロックが必要なもの(100%使用)に対してクロック下げ
[Rule]
name=fixed low
cpu_interval=0-100
programs=program6
profile=fixed low
[/Rule]

# ondemand使用
[Rule]
name=ondemand min-max
cpu_interval=0-100
programs=program7,program8
profile=ondemand min-max
[/Rule]

# 最大
[Rule]
name=fixed max
cpu_interval=0-100
programs=program9,program10,program11
profile=fixed max
[/Rule]

# デフォルトは最低クロックから最大クロックまで使用
[Rule]
name=default
cpu_interval=0-100
profile=conservative min-max
[/Rule]

動作のテスト

設定ファイルを編集したら意図した通りに動作するかどうかのチェックが必要。

(デーモンが動作している場合は止める)
$ sudo /etc/init.d/cpufreqd stop

(テスト)
$ sudo /usr/sbin/cpufreqd -D -V 7[25]
(Ctrl+Cで停止)

(デーモン開始)
$ sudo /etc/init.d/cpufreqd start

プロファイルの手動変更

設定ファイルで定義した任意のプロファイルに手動で切り替えることのできるマニュアル・モードがある。

マニュアル・モードを利用するための条件

  • 設定ファイルでenable_remote=1指定を行っている

  • 設定ファイルのremote_groupに指定されているグループのメンバである

マニュアル・モードを利用するためのコマンドについては下の関連セクションを参照。

関連セクション

cpufreqd-icon

cpufreqd-iconはプロファイルの手動切り替えとダイナミック・モードへの切り替えの操作をGUI上で行う自作システムトレイツール。

マニュアル・モードを使える条件を満たしていればトレイアイコンのメニューから簡単に操作が行える。

マルチコア(CPU)環境における動作について

  • プロファイルを手動で切り替える際には全てのCPU(コア)のプロファイルが同時に切り替わる

  • /etc/cpufreqd.confのルール定義内のの項目profileの値をCPU0:[CPU0へ適用するプロファイル名];CPU1:[CPU1へ適用するプロファイル名];CPU2:[CPU2へ適用するプロファイル名]のようにする記法により、そのルールになる条件を満たしたときにCPUごとに異なるプロファイルが適用されるようにすることはできるが、バージョン2.4.2の時点では動かすには修正が必要



[25] 最も詳細なメッセージ出力を端末に行うオプション