CPUfreq
CPUfreqは、CPUのクロック数を動的に変更する機能です。CPUfreqを利用することで、OSの負荷に応じて動的にCPUのクロック数を調整することができます。 これにより、省電力効果を得ることができます。
CPUfreqを利用する場合、BIOS(EFI)でACPIやCPUのパワーマネージメント関係の設定を有効にしておきましょう。
以下は設定項目の例です。
- ACPI
- CPU P State
- CPU C State
- SpeedStep
- Cool'n'Quiet
注意
BIOS(EFI)の設定によってはCPUfreqが有効になりません。私の環境では「Local x2APIC」を有効にすると、CPUfreqが無効になりました。
CPUfreqが有効にならない場合は、BIOS(EFI)の設定をデフォルトに戻してみるのも一つの手です。
ただしデフォルトに戻した場合は、起動ディスクの順番などPC(OS)の起動に必要な設定もデフォルトに戻ってしまうため、設定を再確認する必要があります。
対応しているCPU
CPUfreqが対応しているCPUです。ARMなど他のアーキテクチャーにも対応していますが、ここで紹介するのはx86プロセッサーです。
- AMD Elan - SC400, SC410
- AMD mobile K6-2+
- AMD mobile K6-3+
- AMD mobile Duron
- AMD mobile Athlon
- AMD Opteron
- AMD Athlon 64
- Cyrix Media GXm
- Intel mobile PIII and Intel mobile PIII-M on certain chipsets
- Intel Pentium 4, Intel Xeon
- Intel Pentium M (Centrino)
- National Semiconductors Geode GX
- Transmeta Crusoe
- Transmeta Efficeon
- VIA Cyrix 3 / C3
このリストにないCPUでも、このリストのCPU以降に発売されたCPUなら対応していることがほとんどです。
例えばIntel CoreのCPU(Core i7など)はCPUfreqに対応しています。
よほど古い、もしくは特殊なPCでもない限り、対応していると思います。
CPUfreqドライバー
CPUfreqには各CPUに対応したドライバーが必要です。ドライバーは以下の方法でLinux Kernelが提供しています。
ビルトイン
Linux Kernelに組み込まれているドライバーです。Ubuntu起動時に自動的にドライバーを読み込みます。
読み込むドライバーも状況により自動的に選択されます。
従ってビルトインで提供されているドライバーが利用できる場合、ユーザー側でドライバー読み込み作業は必要ありません。
多くのCPUがビルトインのドライバーで対応できるでしょう。
カーネルモジュール
Linux Kernelに組み込まれておらず、別ファイルとして提供されているドライバーです。カーネルモジュールとして提供されているドライバーは、自分で読み込む必要があります。
ドライバーは「/lib/modules/$(uname -r)/kernel/drivers/cpufreq」フォルダー内にあります。
$(uname -r)について
「$(uname -r)」は現在動作しているカーネルの種類やバージョンの文字列に置き換えます。「/lib/modules」フォルダーを見ると、以下のようにインストールされているLinux Kernelごとにフォルダーが存在します。
「$(uname -r)」を利用すると、現在動作しているカーネルのフォルダーを表現することができます。
フォルダー名を確認したい場合は、端末から以下のコマンドを実行してください。
echo /lib/modules/$(uname -r)/kernel/drivers/cpufreq
CPUfreqドライバーの対応表
省電力技術とCPUfreqドライバーの対応表です。Intel/AMD以外のCPUや、あまり馴染みのないCPUは省略します。
汎用ドライバー
汎用的に利用できるドライバーです。省電力技術 | ドライバー | 備考 |
---|---|---|
ACPI Pステート | acpi-cpufreq | ACPI Pステートに対応したドライバー。 私の環境(Core i7)ではこのドライバーが使われています。 近年発売されたCPUは、このドライバーが使われます。 |
Intel CPU向けのドライバー
Intel CPU向けのドライバーです。ACPI Pステートに対応している場合、「acpi-cpufreq」ドライバーを利用してください。
「acpi-cpufreq」ドライバーの方が省電力効果が高いためです。
省電力技術 | ドライバー | 備考 |
---|---|---|
Intel SpeedStepテクノロジー(共通) | speedstep-lib | 以下のドライバーが利用する共通ドライバー(モジュール) speedstep-smi speedstep-ich p4-clockmod 以下のSpeedStepのバージョンに対応 SpeedStep Version 1.x SpeedStep Version 2.x |
Intel SpeedStepテクノロジー(SMI) | speedstep-smi | 440BX 440ZX 440MX |
Intel SpeedStepテクノロジー(ICH) | speedstep-ich | ICH2-M ICH3-M ICH4-M |
Intel SpeedStepテクノロジー(P4) | p4-clockmod | Pentium 4 Pentium 4-Mの場合、「speedstep-ich」ドライバー推奨 |
Enhanced Intel SpeedStep Technology(EIST) | speedstep-centrino | SpeedStep Version 3.x Centrino Banias Dothan |
AMD CPU向けのドライバー
AMD CPU向けのドライバーです。ACPI Pステートに対応している場合、「acpi-cpufreq」ドライバーを利用してください。
「acpi-cpufreq」ドライバーの方が省電力効果が高いためです。
省電力技術 | ドライバー | 備考 |
---|---|---|
AMD PowerNow!(K6) | powernow-k6 | K6-2+ K6-III+ |
AMD PowerNow!(K7) | powernow-k7 | モバイルAthlon 4 モバイルAthlon XP モバイルAthlon XP-M |
AMD Cool'n'Quiet | powernow-k8 | Athlon64以降 |
CPUfreqガバナー
CPUfreqガバナーとは、CPUfreqの設定のことです。このCPUfreqガバナーを指定することで、CPUのクロック数の調整を行います。
5種類のガバナーがありますが、どのガバナーを利用できるかはドライバー次第です。
1.powersaveガバナー
「powersave」ガバナーは、CPUのクロック数を最低クロックで固定します。最も省電力を期待できますが、CPUのパフォーマンスは一番低くなります。
また高負荷な状況が続くと、逆にシステム全体の消費電力が上がってしまう可能性があります。
2.conservativeガバナー
「conservative」ガバナーは、負荷に応じてCPUのクロック数を最低クロック数から最大クロック数の間で変化させます。クロック数が変化する範囲は「ondemand」ガバナーと同等ですが、変化の程度が「ondemand」ガバナーよりも緩やかです。
負荷の状況により、 「ondemand」ガバナーと使い分けると良いでしょう。
3.ondemandガバナー
「ondemand」ガバナーは、負荷に応じてCPUのクロック数を最低クロック数から最大クロック数の間で変化させます。「conservative」ガバナーと比較し「ondemand」ガバナーは、積極的にクロック数を変化させます。
短時間に低負荷な状況と高負荷な状況が頻繁に切り替わる場合、省電力効果は落ちます。
4.performanceガバナー
「performance」ガバナーは、CPUのクロック数を最高クロックで固定します。高負荷な状況が続きパフォーマンスを優先したい時に指定するとよいでしょう。
5.userspaceガバナー
ユーザーが設定をカスタマイズできるガバナーです。CPUfreqドライバーの確認
CPUfreqドライバーが有効になっているか確認する方法です。1./sys/devices/system/cpu
まずNautilusを起動し、「/sys/devices/system/cpu」フォルダーを開きます。2.cpufreqフォルダー
「cpufreq」フォルダーを開きます。CPUfreqガバナーやCPUの種類によってはファイルが存在しない場合もありますが、以下のように何かしらファイルが存在すればCPUfreqドライバーが有効になっています。
ちなみに「ondemand」フォルダーは、「ondemand」ガバナーを指定した時に存在します。
フォルダー内には各種情報ファイルがあります。
このフォルダー内のファイルについては、「cpufreqフォルダー内のファイルについて」を参考にしてください。
3.各CPUのcpufreqフォルダー
各CPU(各論理コア)ごとのフォルダー内にも「cpufreq」フォルダーがあります。例えば論理コアが8つあるCPUでは、「CPU0」〜「CPU7」フォルダーがあります。
以下は「cpu0/cpufreq」フォルダーです。
CPUfreqドライバーが有効になっている場合、上記のように何かしらファイルが存在します。
CPUfreqドライバーが無効になっている場合、このフォルダーが存在しないか、このフォルダー内にファイルが存在しません。
このフォルダー内のファイルについては、「CPUのcpufreqフォルダー内のファイルについて」を参考にしてください。