|
|
|
|
27.5 The powersave Package
The powersave package
cares about all the previously-mentioned power saving functions.
Due to the increasing demand for lower energy consumption
in general, some of its features are also importand on workstations
and servers, such as suspend, standby, or cpu frequency
scaling.
This package contains all power management features of your computer. It
supports hardware using ACPI, APM, IDE hard disks, and
or
technologies. The functionalities from the packages apmd, acpid, ospmd, and cpufreqd (now cpuspeed) have been consolidated in the
powersave package. Daemons from
these packages, except acpid that acts as a multiplexer for acpi events,
should not be run concurrently with the powersave daemon.
Even if your system does not contain all the hardware elements listed above,
use the powersave daemon for controlling the power saving function. Because
ACPI and APM are mutually exclusive, you can only use one of these systems on
your computer. The daemon automatically detects any changes in the hardware
configuration.
27.5.1 Configuring the powersave Package
The configuration of powersave is distributed to several files. Every
configuration option listed there contains additional documentation
about its functionality.
- /etc/sysconfig/powersave/common
-
This file contains general settings for the powersave daemon. For
example, the amount of debug messages in
/var/log/messages can be increased by increasing
the value of the variable DEBUG.
- /etc/sysconfig/powersave/events
-
The powersave daemon needs this file for processing system events. An
event can be assigned external actions or actions performed by the daemon
itself. For external actions, the daemon tries to run an executable file
(usually a Bash script) in
/usr/lib/powersave/scripts/. Predefined internal
actions are:
-
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 slows down the processor by the
value defined in MAX_THROTTLING.
This value depends on the current scheme.
dethrottle sets the processor to
full performance. suspend_to_disk,
suspend_to_ram, and standby
trigger the system event for a sleep mode. These three actions
are generally responsible for triggering the sleep mode, but
they should always be associated with specific system events.
The directory
/usr/lib/powersave/scripts
contains scripts for processing events:
- switch_vt
-
Useful if the screen is displaced after a suspend or standby.
- wm_logout
-
Saves the settings and logs out from GNOME, KDE, or
other window managers.
- wm_shutdown
-
Saves the GNOME or KDE settings and shuts down
the system.
- set_disk_settings
-
Executes the disk settings made in
/etc/sysconfig/powersave/disk.
If, for example, the variable
EVENT_GLOBAL_SUSPEND2DISK="prepare_suspend_to_disk
do_suspend_to_disk" is set, the two scripts or actions are
processed in the specified order as soon as the user gives powersaved the
command for the sleep mode suspend to disk. The daemon
runs the external script
/usr/lib/powersave/scripts/prepare_suspend_to_disk.
After this script has been processed successfully, the daemon runs the
internal action do_suspend_to_disk and sets the
computer to the sleep mode after the script has unloaded critical modules
and stopped services.
The actions for the event of a sleep button could be modified as in
EVENT_BUTTON_SLEEP="notify suspend_to_disk". In
this case, the user is informed about the suspend by a pop-up window in X
or a message on the console. Subsequently, the event
EVENT_GLOBAL_SUSPEND2DISK is generated,
resulting in the execution of the mentioned actions and a secure system
suspend mode. The internal action notify can be
customized using the variable NOTIFY_METHOD in
/etc/sysconfig/powersave/common.
- /etc/sysconfig/powersave/cpufreq
-
Contains variables for optimizing the dynamic CPU frequency settings and
whether the userspace or the kernel implementation should be used.
- /etc/sysconfig/powersave/battery
-
Contains battery limits and other battery-specific settings.
- /etc/sysconfig/powersave/sleep
-
In this file, activate the sleep modes and determine which critical
modules should be unloaded and which services should be stopped prior to
a suspend or standby event. When the system is resumed, these modules are
reloaded and the services are restarted. You can even delay a triggered
sleep mode, for example, to save files. The default settings mainly
concern USB and PCMCIA modules. A failure of suspend or standby is
usually caused by certain modules. See Section 27.5.4,
Troubleshooting for more information
about identifying the error.
- /etc/sysconfig/powersave/thermal
-
Activates cooling and thermal control. Details about this
subject are available in the file
/usr/share/doc/packages/powersave/README.thermal.
- /etc/sysconfig/powersave/disk
-
This configuration file controls the actions and settings made regarding
the hard disk.
- /etc/sysconfig/powersave/scheme_*
-
These are the various schemes that adapt the power consumption to certain
deployment scenarios. A number of schemes are preconfigured and can be
used as they are. Custom schemes can be saved here.
27.5.2 Configuring APM and ACPI
Suspend and Standby
There are three basic ACPI sleep modes
and two APM sleep modes:
- Suspend to Disk (ACPI S4, APM suspend)
-
Saves the entire memory content to the hard disk.
The computer is switched off completely and does not
consume any power. This sleep mode is enabled by default
and should work on all systems.
- Suspend to RAM (ACPI S3, APM suspend)
-
Saves the states of all devices to the main memory.
Only the main memory continues consuming power. This sleep mode is
disabled by default because still causes problems on some systems.
However, support has been extended greatly.
- Standby (ACPI S1, APM standby)
-
Switches some devices off (manufacturer-dependent).
Make sure that the following default options are set in the
file /etc/sysconfig/powersave/events for the
correct processing of suspend, standby, and resume
(default settings following the installation of SUSE Linux Enterprise):
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"
Custom Battery States
In the file /etc/sysconfig/powersave/battery,
define three battery charge levels (in percent) that
trigger system alerts or specific actions when they
are reached.
BATTERY_WARNING=12
BATTERY_LOW=7
BATTERY_CRITICAL=2
The actions or scripts to execute when the charge levels
drop under the specified limits are defined in the configuration
file /etc/sysconfig/powersave/events.
The standard actions for buttons can be modified
as described in Section 27.5.1,
Configuring the powersave Package.
EVENT_BATTERY_NORMAL="ignore"
EVENT_BATTERY_WARNING="notify"
EVENT_BATTERY_LOW="notify"
EVENT_BATTERY_CRITICAL="wm_shutdown"
Adapting Power Consumption to Various Conditions
The system behavior can be adapted to the type of power supply.
The power consumption of the system should be reduced when
the system is disconnected from the AC power supply and operated
with the battery. Similarly, the performance should automatically
increase as soon as the system is connected to the AC power
supply. The CPU frequency, the power saving function of IDE, and
a number of other parameters can be modified.
The actions to execute when the computer is disconnected
from or connected to the AC power supply are defined in
/etc/sysconfig/powersave/events. Select the
schemes to use in /etc/sysconfig/powersave/common:
AC_SCHEME="performance"
BATTERY_SCHEME="powersave"
The schemes are stored in files in
/etc/sysconfig/powersave. The filenames are in
the format scheme_name-of-the-scheme. The example
refers to two schemes:
scheme_performance and
scheme_powersave. performance,
powersave, presentation, and
acoustic are preconfigured. Existing schemes can be
edited, created, deleted, or associated with different power supply states
with the help of the YaST power management module described in Section 27.6,
The YaST Power Management Module.
27.5.3 Additional ACPI Features
If you use ACPI, you can control the response of your system to
ACPI buttons (power, sleep,
lid open, and lid closed).
Configure execution of the actions
in /etc/sysconfig/powersave/events.
Refer to this configuration file for an explanation of the
individual options.
- EVENT_BUTTON_POWER="wm_shutdown"
-
When the power button is pressed, the system
responds by shutting down the respective window manager (KDE, GNOME,
fvwm, etc.).
- EVENT_BUTTON_SLEEP="suspend_to_disk"
-
When the sleep button is pressed, the system is
set to the suspend-to-disk mode.
- EVENT_BUTTON_LID_OPEN="ignore"
-
Nothing happens when the lid is opened.
- EVENT_BUTTON_LID_CLOSED="screen_saver"
-
When the lid is closed, the screen saver is activated.
- EVENT_OTHER="ignore"
-
This event happens if an unknown event is encountered by the daemon.
Unknown events include ACPI hotkeys on some machines.
Further throttling of the CPU performance is possible if the CPU
load does not exceed a specified limit for a specified time.
Specify the load limit in PROCESSOR_IDLE_LIMIT
and the time-out in CPU_IDLE_TIMEOUT. If the CPU
load stays below the limit longer than the time-out, the event configured in
EVENT_PROCESSOR_IDLE is activated. If the CPU is
busy
again, EVENT_PROCESSOR_BUSY is executed.
27.5.4 Troubleshooting
All error messages and alerts are logged in the file
/var/log/messages. If you cannot find the needed
information, increase the verbosity of the messages of powersave using
DEBUG in the file
/etc/sysconfig/powersave/common. Increase the value of
the variable to 7 or even 15 and
restart the daemon. The more detailed error messages in
/var/log/messages should help you to find the error.
The following sections cover the most common problems with powersave.
ACPI Activated with Hardware Support but Functions Do Not Work
If you experience problems with ACPI, use the command dmesg|grep
-i acpi to search
the output of dmesg for ACPI-specific messages. A BIOS
update may
be required to resolve the problem. Go to the home page of your laptop
manufacturer, look for an updated BIOS version, and install it. Ask the
manufacturer to comply with the latest ACPI specification. If the errors
persist after the BIOS update, proceed as follows to replace the faulty
DSDT table in your BIOS with an updated DSDT:
-
Download the DSDT for your system from https://acpi.sourceforge.net/dsdt/tables. Check
if the file is decompressed and compiled as shown by the
file extension .aml (ACPI machine language).
If this is the case, continue with step 3.
-
If the file extension of the downloaded table is
.asl (ACPI source language), compile it with iasl
(package pmtools). Enter the
command iasl -sa file.asl. The latest
version of iasl (Intel ACPI compiler) is available at https://developer.intel.com/technology/iapc/acpi/downloads.htm.
-
Copy the file DSDT.aml to any location
(/etc/DSDT.aml is recommended). Edit
/etc/sysconfig/kernel and adapt the path to the DSDT
file accordingly. Start mkinitrd (package mkinitrd). Whenever you install the kernel
and use mkinitrd to create an
initrd, the modified DSDT is integrated and loaded
when the system is booted.
CPU Frequency Does Not Work
Refer to the kernel sources (kernel-source) to see if your processor is
supported. You may need a special kernel module or module option to
activate CPU frequency control. This information is available in
/usr/src/linux/Documentation/cpu-freq/*. If a special
module or module option is needed, configure it in the file
/etc/sysconfig/powersave/cpufreq by means of the
variables CPUFREQD_MODULE and
CPUFREQD_MODULE_OPTS.
Suspend and Standby Do Not Work
There are several kernel-related problems that
prevent the use of suspend and standby on ACPI systems:
-
Currently, systems with more than 1 GB RAM do not
support suspend.
-
Currently, multiprocessor systems and systems with a P4 processor
(with hyperthreading) do not support suspend.
The error may also be due to a faulty DSDT implementation (BIOS).
If this is the case, install a new DSDT.
On ACPI and APM systems: When the system tries to unload faulty modules,
the system is arrested or the suspend event is not triggered. The same can
also happen if you do not unload modules or stop services that prevent a
successful suspend. In both cases, try to identify the faulty module that
prevented the sleep mode. The log files generated by the powersave daemon
in /var/log/suspend2ram.log and
/var/log/suspend2disk.log are very helpful in this
regard. If the computer does not enter the sleep mode, the cause lies in
the last module unloaded. Manipulate the following settings in
/etc/sysconfig/powersave/sleep to unload problematic
modules prior to a suspend or standby.
UNLOAD_MODULES_BEFORE_SUSPEND2DISK=""
UNLOAD_MODULES_BEFORE_SUSPEND2RAM=""
UNLOAD_MODULES_BEFORE_STANDBY=""
SUSPEND2DISK_RESTART_SERVICES=""
SUSPEND2RAM_RESTART_SERVICES=""
STANDBY_RESTART_SERVICES=""
If you use suspend or standby in changing network environments or in
connection with remotely mounted file systems, such as Samba and NIS, use
automounter to mount them or add the respective services, for example,
smbfs or nfs, in the above-mentioned
variable. If an application accesses the remotely mounted file system prior
to a suspend or standby, the service cannot be stopped correctly and the
file system cannot be unmounted properly. After resuming the system, the
file system may be corrupt and must be remounted.
27.5.5 For More Information
|
|
|