33.5 powersaveパッケージ

powersaveパッケージには、前記の省電力機能がすべて含まれています。一般に省電力に関する要望が高まっているため、サスペンド、スタンバイまたはCPU周波数調節など、いくつかの機能がワークステーションとサーバで重要です。

このパッケージにはご使用のコンピュータの電源管理機能がすべて含まれます。電源管理機能はACPI、APM、IDEハードディスク、PowerNow!またはSpeedStepテクノロジを使用してハードウェアをサポートします。apmdacpidospmdcpufreqd (現在はcpuspeed)などの各パッケージの機能がpowersaveパッケージに統合されています。acpiイベントとして機能するacpid以外、これらのパッケージのデーモンは省電力デーモンと同時に実行しないでください。

ご使用のシステムに前述のハードウェア要素の一部が含まれていないとしても、省電力機能の制御にはpowersaveデーモンを使用してください。ACPIおよびAPMは相互排他的であるため、ご使用のシステムではこれらのシステムのどちらか一方しか使用できません。このデーモンはハードウェア構成に変更があった場合、これを自動的に検出します。

33.5.1 powersaveパッケージの設定

powersaveの設定は複数のファイルに分散されています。ファイル内の設定オプションにはすべて、機能に関するドキュメントが含まれています。

/etc/sysconfig/powersave/common

このファイルにはpowersaveデーモンの一般的な設定が含まれます。たとえば、エラーメッセージの量(/var/log/messages内の)は、変数POWERSAVE_DEBUGの値を増加させることで増やせます。

/etc/sysconfig/powersave/events

powersaveデーモンはシステムイベントを処理するためにこのファイルを必要とします。1つのイベントには外部アクションまたはデーモン自体が実行したアクションを割り当てることができます。外部アクションの場合、デーモンは/usr/lib/powersave/scripts/にある外部ファイル(通常、Bashスクリプト)を実行しようとします。事前定義された内部アクションは次のとおりです。

  • ignore

  • throttle

  • dethrottle

  • suspend_to_disk

  • suspend_to_ram

  • standby

  • do_suspend_to_disk

  • do_suspend_to_ram

  • do_standby

  • notify

  • screen_saver

  • reread_cpu_capabilities

throttleは、MAX_THROTTLINGで指定された値に従ってプロセッサの速度を遅くします。この値は現在のスキーマに依存します。dethrottleはプロセッサをフルパフォーマンスに設定します。suspend_to_disksuspend_to_ram、およびstandbyはスリープモード用のシステムイベントを生成します。これら3つのアクションは一般的にスリープモードのトリガとなりますが、常に、これらを特定のシステムイベントと関連付けるようにしてください。

ディレクトリ/usr/lib/powersave/scriptsにはイベントを処理するための各種スクリプトが含まれます。

switch_vt

サスペンドやスタンバイの後に画面が戻らない場合に有用です。

wm_logout

設定を保存し、GNOME、KDE、または他のウィンドウマネージャからログアウトします。

wm_shutdown

GNOMEまたはKDEの設定を保存し、システムをシャットダウンします。

set_disk_settings

/etc/sysconfig/powersave/diskで作成されたディスク設定を実行します。

たとえば、変数EVENT_GLOBAL_SUSPEND2DISK="prepare_suspend_to_disk do_suspend_to_disk"が設定されている場合、ユーザがスリープモード用のコマンドであるsuspend to diskをpowersavedに対して発行するとすぐに、2つのスクリプトまたはアクションが指定された順番で処理されます。デーモンは外部スクリプトである/usr/lib/powersave/scripts/prepare_suspend_to_diskを実行します。このスクリプトが正常に実行されると、重要なモジュールがスクリプトによりアンロードされ、各種サービスが停止された後、デーモンが内部アクションであるdo_suspend_to_diskを実行し、コンピュータをスリープモードにします。

sleepボタンのイベントを処理するアクションはEVENT_BUTTON_SLEEP="notify suspend_to_disk"のように変更することができます。この場合、コンソールに表示されるメッセージまたはX内のポップアップウィンドウで、サスペンドについて通知されます。その結果、イベントEVENT_GLOBAL_SUSPEND2DISKが生成され、前述のアクションが実行されて、システムはサスペンドモードに入ります。内部アクションであるnotify/etc/sysconfig/powersave/commonにある変数NOTIFY_METHODを使用してカスタマイズできます。

/etc/sysconfig/powersave/cpufreq

動的CPU周波数設定の最適化、およびユーザスペースか、カーネル実装のいずれを使用するかを設定する変数が含まれます。

/etc/sysconfig/powersave/battery

バッテリの制限とその他のバッテリ固有設定が含まれます。

/etc/sysconfig/powersave/sleep

このファイルでは、スリープモードを有効にし、サスペンドイベントまたはスタンバイイベントの前にアンロードすべき重要なモジュールと、停止すべき各種サービスを指定します。システムが再開されるとこれらのモジュールは再ロードされ、各種サービスも再開されます。また、ファイルを保存するなどのために、トリガされたスリープモードを遅らせることも可能です。デフォルト設定は主にUSBおよびPCMCIAモジュールに関係しています。サスペンドまたはスタンバイの障害は通常、ある一定のモジュールによって発生します。エラーの特定の詳細については33.5.4項 「トラブルシューティング」を参照してください。

/etc/sysconfig/powersave/thermal

冷却コントロールおよびサーマルコントロールを有効にします。このテーマの詳細については、ファイル/usr/share/doc/packages/powersave/README.thermalを参照してください。

/etc/sysconfig/powersave/disk

この設定ファイルは、ハードディスクに関して作成されたアクションおよび設定を制御します。

/etc/sysconfig/powersave/scheme_*

これらは特定の導入シナリオに応じて消費電力を最適化するさまざまなスキーマです。多くのスキーマが事前に設定され、そのまま使用できます。また、カスタムスクリプトをここに保存することもできます。

33.5.2 APMおよびACPIの設定

33.5.2.1 サスペンドおよびスタンバイ

次に示すように、3種類の基本ACPIスリープモードおよび2種類のAPMスリープモードがあります。

サスペンド(ディスク)(ACPI S4、APMサスペンド)

メモリの内容全部をハードディスクに保存します。コンピュータは完全に電源オフの状態になり、電力は消費されません。このスリープモードは、デフォルトで有効に設定されており、すべてのシステムで機能します。

サスペンド(RAM)(ACPI S3、APMサスペンド)

デバイス全体の状態をメインメモリに保存します。メインメモリ以外からの電力消費はありません。このスリープモードは、一部のシステムで問題が発生するため、デフォルトで無効に設定されています。ただし、幅広いサポートが提供されています。

スタンバイ(ACPI S1、APMスタンバイ)

一部のデバイスの電源をオフにします(メーカにより異なる)。

サスペンド、スタンバイ、再開を正しく処理するため、ファイル/etc/sysconfig/powersave/eventsで次のデフォルトオプションが設定されていることを確認してください(インストール時のデフォルト設定)。

EVENT_GLOBAL_SUSPEND2DISK=
    "prepare_suspend_to_disk screen_saver do_suspend_to_disk"
EVENT_GLOBAL_SUSPEND2RAM=
    "prepare_suspend_to_ram screen_saver do_suspend_to_ram"
EVENT_GLOBAL_STANDBY=
    "prepare_standby screen_saver do_standby"
EVENT_GLOBAL_RESUME_SUSPEND2DISK=
    "restore_after_suspend_to_disk"
EVENT_GLOBAL_RESUME_SUSPEND2RAM=
    "restore_after_suspend_to_ram"
EVENT_GLOBAL_RESUME_STANDBY=
    "restore_after_standby"

33.5.2.2 バッテリ状態のカスタマイズ

ファイル/etc/sysconfig/powersave/batteryで3通りのバッテリ充電レベル(パーセント指定)を定義します。バッテリの充電量がこれらのレベルに達すると、システムアラートが生成されたり、特定のアクションが実行されたりします。

BATTERY_WARNING=12
BATTERY_LOW=7
BATTERY_CRITICAL=2

充電レベルが指定された制限値を下回った場合に実行されるアクションまたはスクリプトは、設定ファイル/etc/sysconfig/powersave/eventsに定義されています。各種ボタンの標準アクションは33.5.1項 「powersaveパッケージの設定」に示されているように変更できます。

EVENT_BATTERY_NORMAL="ignore"
EVENT_BATTERY_WARNING="notify"
EVENT_BATTERY_LOW="notify"
EVENT_BATTERY_CRITICAL="wm_shutdown"

33.5.2.3 さまざまな条件に応じた電力消費の最適化

システムの動作は電源のタイプによって調整することができます。システムがAC電源を使用せずバッテリで稼動している場合は、システムの電力消費を抑えねばなりません。また、システムがAC電源に接続された場合はすぐ、自動的にパフォーマンスを上げる必要があります。このように、CPUの周波数、IDEの省電力機能、他のさまざまなパラメータを変更することができます。

コンピュータがAC電源に接続されている場合、またはされていない場合に実行される各種アクションは、/etc/sysconfig/powersave/eventsで定義されています。以下で/etc/sysconfig/powersave/commonで使用するスキーマを選択します。

AC_SCHEME="performance"
BATTERY_SCHEME="powersave"

各スキーマは/etc/sysconfig/powersaveにあるファイルに保存されています。ファイル名はscheme_name-of-the-schemeという形式になっています。次に2つのスキーマを例としてあげます。scheme_performanceおよびscheme_powersaveには、performancepowersavepresentation、およびacousticが事前定義されています。33.6項 「YaST電源管理モジュール」で説明されている、YaSTの電源管理モジュールを使用して、既存のスキーマの編集、作成、削除、別の電源状態との関連付けを行うことができます。

33.5.3 その他のACPI機能

ACPIを使用している場合、ACPIボタン(電源、スリープ、ラップトップを開く、ラップトップを閉じる)に対するシステム応答を制御することができます。/etc/sysconfig/powersave/eventsでアクションの実行を設定します。個別のオプションについての説明はこの設定ファイルを参照してください。

EVENT_BUTTON_POWER="wm_shutdown"

電源ボタンが押されると、システムは応答して該当するウィンドウマネージャ(KDE、GNOME、fvwmなど)を閉じます。

EVENT_BUTTON_SLEEP="suspend_to_disk"

スリープボタンが押されると、システムはsuspend-to-diskモードに設定されます。

EVENT_BUTTON_LID_OPEN="ignore"

ラップトップのふたが開いている状態でアクションは発生しません。

EVENT_BUTTON_LID_CLOSED="screen_saver"

ラップトップが閉じられると、スクリーンセーバが有効になります。

EVENT_OTHER="ignore"

このイベントは、デーモンで不明なイベントが起こった場合に発生します。不明なイベントには、一部のマシンにあるACPIホットキーなどがあります。

指定した時間内に、CPUの負荷が指定した制限を越えない場合、さらにCPUのパフォーマンスを低下させることも可能です。負荷制限値をPROCESSOR_IDLE_LIMITに、タイムアウトをCPU_IDLE_TIMEOUTに指定します。CPUの負荷が制限値を越えない状態が、タイムアウトで指定した時間よりも長く続いた場合には、EVENT_PROCESSOR_IDLEで設定されたイベントが有効になります。CPUが再びビジーになると、EVENT_PROCESSOR_BUSYが実行されます。

33.5.4 トラブルシューティング

すべてのエラーメッセージおよびアラートはファイル/var/log/messagesに記録されます。必要な情報が得られない場合、ファイル/etc/sysconfig/powersave/commonにある、DEBUGを使用してpowersaveに関連するメッセージの冗長度を上げます。変数の値を7または15まで増やし、デーモンを再起動します。/var/log/messagesで利用可能なより詳しいエラーメッセージは、エラーの発見に役立ちます。以下のセクションではpowersaveで最も頻繁に起こる問題について解説します。

33.5.4.1 ACPIはハードウェアサポートで有効になっていますが、各機能を使用できません。

ACPIで問題が発生した場合は、コマンドdmesg|grep -i acpiを使用し、dmesgの出力からACPI固有のメッセージを検索します。問題を解決するためにBIOSのアップデートが必要になる場合があります。ラップトップメーカのホームページにアクセスし、BIOSの更新バージョンを検索してインストールします。メーカに最新のACPI仕様に準拠していることを確認してください。BIOSの更新後もエラーが継続する場合は、以下の手順に従い、BIOS内で問題が発生しているDSDTテーブルを更新されたDSDTに置き換えます。

  1. http://acpi.sourceforge.net/dsdt/tablesからシステムに適したDSDTをダウンロードします。以下に示すようにファイルを解凍し、コンパイル後ファイル拡張子が.aml (ACPI machine language)になっていることを確認します。拡張子が.amlの場合はステップ3に進みます。

  2. ダウンロードしたテーブルのファイル拡張子が.asl (ACPI source language)である場合は、iasl (pmtoolsパッケージ)でコンパイルします。コマンドiasl -sa file.aslを入力してください。iasl (Intel ACPIコンパイラ)の最新バージョンは、http://developer.intel.com/technology/iapc/acpi/downloads.htmで入手できます。

  3. ファイルDSDT.amlをいずれかのロケーション(/etc/DSDT.amlが推奨されています)にコピーします。/etc/sysconfig/kernelを編集し、DSDTファイルに応じてパスを変更します。mkinitrd (mkinitrdパッケージ)を開始します。カーネルをアンインストールし、mkinitrdを使用してinitrdを作成する場合は常に、変更されたDSDTが組み込まれ、システムブート時にロードされます。

33.5.4.2 CPU周波数調節が機能しません。

カーネルソース(kernel-source)を参照して、ご使用のプロセッサがサポートされているか確認してください。CPU周波数制御を有効にするには特別なカーネルモジュールまたはモジュールオプションが必要になる場合があります。この情報については/usr/src/linux/Documentation/cpu-freq/*を参照してください。特別なモジュールまたはモジュールオプションが必要な場合その設定は、ファイル/etc/sysconfig/powersave/cpufreqにある変数CPUFREQD_MODULEおよびCPUFREQD_MODULE_OPTSで行います。

33.5.4.3 サスペンドとスタンバイが機能しません。

ACPIシステムにはサスペンドおよびスタンバイの不具合の原因になる、カーネル関連の問題が複数報告されています。以下を参照してください。

  • 現在、RAMが1GB以上のシステムでは、サスペンドはサポートされていません。

  • 現在、マルチプロセッサシステムおよびP4プロセッサ(ハイパースレッディング搭載)では、サスペンドはサポートされていません。

エラーメッセージはDSDTの実装(BIOS)の不具合が原因である可能性もあります。この場合、新しいDSDTをインストールします。

ACPIおよびAPMシステムの場合:システムが不具合のあるモジュールをアンロードしようとすると、システムは停止するか、またはサスペンドイベントがトリガされません。また、サスペンドに入らない原因となるモジュールをアンロードしない、またはそうしたサービスを停止しない場合、同様の状態に陥る可能性があります。どちらの場合でも、スリープモードに入らない原因となっている障害モジュールを識別してください。このモジュールの判別には/var/log/suspend2ram.logおよび/var/log/suspend2disk.logにあるpowersaveによって生成されたログファイルが非常に便利です。コンピュータがスリープモードにならない場合、その原因は最後にアンロードされたモジュールに関係しています。/etc/sysconfig/powersave/sleepにある以下の設定を変更し、サスペンドまたはスタンバイがトリガされる前に問題のあるモジュールをアンロードします。

UNLOAD_MODULES_BEFORE_SUSPEND2DISK=""
UNLOAD_MODULES_BEFORE_SUSPEND2RAM=""
UNLOAD_MODULES_BEFORE_STANDBY=""
SUSPEND2DISK_RESTART_SERVICES=""
SUSPEND2RAM_RESTART_SERVICES=""
STANDBY_RESTART_SERVICES="" 

SambaやNISといったネットワーク環境の変更時、またはリモートでマウントされたファイルシステムとの接続時にサスペンドまたはスタンバイを使用する場合、オートマウンタを使用してそれらをマウントするか、それぞれのサービスを追加するようにします。たとえば、前述の変数では、smbfsまたはnfsなどが該当します。サスペンドまたはスタンバイの前に、アプリケーションがリモートでマウントされたファイルシステムにアクセスすると、このサービスは正常に停止されません。このためファイルシステムを正常にアンマウントすることができなくなります。このようなことが原因で、システムを再開した後、ファイルシステムに障害が発生したり、再マウントが必要になったりする場合があります。

33.5.5 関連情報