21.5. powersaveパッケージ

powersaveパッケージは、ラップトップでバッテリ使用時に省電力機能をサポートします。この機能の一部はサスペンド、スタンバイ、ACPIボタン機能、およびIDEハードディスクをスリープ状態に切り替える場合など、通常のワークステーションやサーバでも有用です。

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

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

21.5.1. powersaveパッケージの設定

通常、powersaveの設定は複数のファイルに分散されています。

/etc/sysconfig/powersave/common

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

/etc/sysconfig/powersave/events

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

  • ignore

  • throttle

  • dethrottle

  • suspend_to_disk

  • suspend_to_ram

  • standby

  • do_suspend_to_disk

  • do_suspend_to_ram

  • do_standby

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

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

notify

コンソール、X Window、またはアコースティック(音による)シグナルのイベントに関する通知です。

screen_saver

スクリーンセーバを作動させます。

switch_vt

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

wm_logout

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

wm_shutdown

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

たとえば、変数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"のように変更することができます。この場合、外部スクリプトnotifyがユーザにサスペンドを通知します。その結果、イベント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モジュールに関係しています。サスペンドまたはスタンバイの障害は通常、ある一定のモジュールによって発生します。エラーの特定の詳細については項21.5.4. 「トラブルシューティング」を参照してください。

/etc/sysconfig/powersave/thermal

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

/etc/sysconfig/powersave/scheme_*

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

21.5.2. APMおよびACPIの設定

21.5.2.1. サスペンドおよびスタンバイ

デフォルトではスリープモードは無効になっています。これはスリープモードが一部のコンピュータではまだ機能しないためです。次に示すように、3種類の基本ACPIスリープモードおよび2種類のAPMスリープモードがあります。

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

メモリの内容全部をハードディスクに保存します。コンピュータは完全に電源オフの状態になり、電力は消費されません。

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

デバイス全体の状態をメインメモリに保存します。メインメモリ以外からの電力消費はありません。

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

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

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

EVENT_GLOBAL_SUSPEND2DISK=
    "prepare_suspend_to_disk do_suspend_to_disk"
EVENT_GLOBAL_SUSPEND2RAM=
    "prepare_suspend_to_ram do_suspend_to_ram"
EVENT_GLOBAL_STANDBY=
    "prepare_standby 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"

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

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

BATTERY_WARNING=20
BATTERY_LOW=10
BATTERY_CRITICAL=5

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

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

21.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が事前定義されています。項21.6. 「YaST電源管理モジュール」で説明されている、YaSTの電源管理モジュールを使用して、既存のスキーマの編集、作成、削除、別の電源状態との関連付けを行うことができます。

21.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"

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

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

21.5.4. トラブルシューティング

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

21.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が組み込まれ、システムブート時にロードされます。

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

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

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

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

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

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

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

ACPIおよびAPMシステムの場合:システムが不具合のあるモジュールをアンロードしようとすると、システムは停止するか、またはサスペンドイベントがトリガされません。また、サスペンドに入らない原因となるモジュールをアンロードしない、またはそうしたサービスを停止しない場合、同様の状態に陥る可能性があります。どちらの場合でも、スリープモードに入らない原因となっている障害モジュールを識別してください。このモジュールの判別には/var/log/sleep modeにある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などが該当します。サスペンドまたはスタンバイの前に、アプリケーションがリモートでマウントされたファイルシステムにアクセスすると、このサービスは正常に停止されません。このためファイルシステムを正常にアンマウントすることができなくなります。このようなことが原因で、システムを再開した後、ファイルシステムに障害が発生したり、再マウントが必要になったりする場合があります。

21.5.4.4. ACPIを使用した場合、Powersaveがバッテリレベルの低下を識別しません。

ACPIを使用する場合、オペレーティングシステムはBIOSに対し、バッテリの充電レベルが一定の基準を下回った場合にメッセージを送信するよう要求できます。バッテリを定期的に確認することはコンピュータのパフォーマンス低下につながる恐れがあります。このメソッドの利点はその必要がないことです。ただし、充電レベルが指定値を下回った場合、BIOSがこの機能をサポートしているのにもかかわらず、通知されない場合があります。この現象がご使用のシステムで発生する場合は、ファイル/etc/sysconfig/powersave/batteryにある変数POWERSAVED_FORCE_BATTERY_POLLINGの値をyesに設定し、バッテリの確認を強制的に行うようにします。

21.5.5. 関連資料

powersaveパッケージは/usr/share/doc/packages/powersaveでも利用できます。