[PR] この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。
バージョン2.6系のLinuxカーネルには、CPUが持っている動的なクロック周波数や電圧(対応している場合)の変更機能を利用するためのcpufreqという仕組みがあります。単独で使用すると効果はそれほど高くないかもしれませんが、後述のcpufreqdと組み合わせてうまく設定をすることで、CPUの消費電力を大幅に削減することができます。
cpufreqでは
クロックや電圧を調節する際の動作モード「governor」の種類
変動するクロック周波数の範囲(最小値と最大値による指定)
の2つにより、動作ポリシーが決定されます。クロック周波数の範囲は、CPU自体の持つ範囲内で、変動を許可する範囲を指定することになります。ただし、変更の段階もCPUによって定められていて数も少ないため、細かい周波数変動をさせることはできません。
cpufrequtils(http://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufrequtils.html)のcpufreqd-infoコマンドを使用すると、これらの情報に加え、現在の動作状態も調べることができます。
例1 cpufreqd-infoによる情報の取得例
$
cpufreq-info
cpufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
driver: powernow-k8
CPUs which need to switch frequency at the same time: 0
hardware limits: 1000 MHz - 2.20 GHz
available frequency steps: 2.20 GHz, 2.00 GHz, 1.80 GHz, 1000 MHz
available cpufreq governors: ondemand, powersave, userspace, performance
current policy: frequency should be within 1000 MHz and 1.80 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 1000 MHz.
「hardware limits(CPU自体の変動可能範囲)」と「available frequency steps(CPUが切り替えることのできるクロック周波数の段階一覧)」は確認しておくとよいでしょう。
cpufreqdは、CPU負荷や動作中のプログラム、センサ値などのシステムからの状態を監視しながら適切な動作ポリシーを適用するプログラムです。上手に設定することで、CPUの消費電力を大幅に削減することができます。
cpufreqdの設定は/etc/cpufreqd.conf
で行います。ここでは、設定の書き方を簡単に扱います。
- # 全体設定
- [General]
- pidfile=/var/run/cpufreqd.pid
- poll_interval=4 # システムの状態を見てプロファイル変更の検討を行う間隔[秒]
- enable_remote=1 # cpufreqd-setによるプロファイルの変更を行えるようにする
- remote_group=wheel # プロファイルの変更を許可するグループ
- verbosity=0 # 出力詳細度・テスト時以外は0で
- [/General]
- # プロファイルの定義
- # 周波数部分は最大値に対するパーセント表記も可能
- [Profile]
- name=conservative min-mid # プロファイル識別名
- minfreq=1000000 # 最低クロック(Hz)
- maxfreq=2000000 # 最大クロック(Hz)
- up_threshold=70 # (ondemand/conservative時のみ)
- # CPU使用率のパーセンテージが
- # この値を超えるとクロックが上がる
- down_threshold=40 # (conservative時のみ)CPU使用率のパーセンテージが
- # この値を下回るまでクロックを下げない
- policy=conservative # このプロファイルで使用するgovernor名
- [/Profile]
- # 以下同様にしてプロファイル定義を続けて記述
- [Profile]
- name=...
- ...
- policy=...
- [/Profile]
- # ルール定義
- # ダイナミック・モードのプロファイル自動切り替えの条件を記述
- # ルール記述の順番によっても挙動が変わるので
- # 意図した通りにならないときは順番を変えるのも手
- # ルール名とプロファイル名は異なっていてもOK
- [Rule]
- name=fixed min # ルール識別名
- cpu_interval=0-100 # CPU使用率がこの範囲のときに下のプロファイルを検討
- programs=program1,program2,program3 # これらのプログラムのいずれかが
- # 動作しているときに下のプロファイルを検討
- profile=fixed min # 上の条件を満たしたときに選択するプロファイルの識別名
- [/Rule]
- # 以下同様にしてルール定義を続けて記述
- [Rule]
- name=...
- ...
- profile=...
- [/Rule]
- [Rule]
- name=default
- cpu_interval=0-100
- profile=conservative min-max
- [/Rule]
設定のテストは、(動作していれば)事前にデーモンを停止しておいて
$
sudo /etc/init.d/cpufreqd stop
cpufreqdを-D
と-V
のオプション[1]付きで実行し、Ctrl+Cで止める形で行うと便利です。
$
sudo /usr/sbin/cpufreqd -D -V 7
その後、システムの起動スクリプトから開始します。
$
sudo /etc/init.d/cpufreqd start
cpufreqd-iconはシステムトレイに常駐して、メニューからcpufreqdのプロファイルの手動変更を簡単に行えるようにしたツールです。ダイナミック・モードへの変更も同様に簡単にできます。
動作に必要なソフトウェア/バージョン1.9.91-
Linux 2.6以上
cpufreqd 2.2.0以上
GLib 2.32以上
GTK+ 3.10以上
libnotify 0.7.6以上
gksu (デーモン制御とテストツール使用時のみ)
システムトレイをサポートしたパネルなど
動作に必要なソフトウェア/バージョン1.9.0-1.9.2
Linux 2.6以上
cpufreqd 2.2.0以上
GLib 2.22以上
GTK+ 2.16以上
libnotify 0.4.1以上
GtkSourceView 2.4以上 (テストツールでのみ使用)
gksu (デーモン制御とテストツール使用時のみ)
システムトレイをサポートしたパネルなど
ビルドに必要なソフトウェア/バージョン1.9.90-(開発パッケージ)
GLib 2.22以上[lib(64)glib2.0-devel,libglib2.0-devなどのパッケージ名]
GTK+ 3.0以上[gtk3-devel,libgtk-3-devなどのパッケージ名]
libnotify 0.4.1以上[lib(64)notify1-devel,libnotify-devなどのパッケージ名]
GtkSourceView 3.2以上(テストツールでのみ使用)[gtksourceview3-devel,libgtksourceview-3.0-devなどのパッケージ名]
ビルドに必要なソフトウェア/バージョン1.9.0-1.9.2(開発パッケージ)
GLib 2.22以上[lib(64)glib2.0-devel,libglib2.0-devなどのパッケージ名]
GTK+ 2.16以上[lib(64)gtk2.0_0-devel,libgtk2.0-devなどのパッケージ名]
libnotify 0.4.1以上[lib(64)notify1-devel,libnotify-devなどのパッケージ名]
GtkSourceView 2.4以上(テストツールでのみ使用)[gtksourceview-devel,libgtksourceview2.0-devなどのパッケージ名]
![]() | 注意 |
---|---|
GtkSourceViewライブラリはconfigureスクリプトに |
動作に必要なソフトウェア/バージョン1(0.9)系
Linux 2.6以上
cpufreqd 2.2.0以上
GLib 2.14以上
GTK+ 2.10以上
libnotify 0.4.1以上
システムトレイをサポートしたパネルなど
ビルドに必要なソフトウェア/バージョン1(0.9)系(開発パッケージ)
GLib 2.14以上[lib(64)glib2.0-devel,libglib2.0-devなどのパッケージ名]
GTK+ 2.10以上[lib(64)gtk2.0_0-devel,libgtk2.0-devなどのパッケージ名]
libnotify 0.4.1以上[lib(64)notify1-devel,libnotify-devなどのパッケージ名]
また、カーネルのcpufreq[2]の動作要件として
クロック周波数の動的な変更を行う省電力機能に対応していて、BIOS上でも有効になっている
CPUに対応したデバイスドライバがLinux(カーネル)に存在し、モジュールの場合は読み込まれている
という条件を満たしていることが必要となります。
cpufreqdに関しては、設定ファイル/etc/cpufreqd.conf
において
許可したグループのメンバがプロファイルを変更できるようにするための「enable_remote=1」指定が記述されている
使用しているユーザアカウントが属するグループ名がremote_groupの値に記述されている
の条件を満たしている必要があります。