856 lines
46 KiB
Plaintext
856 lines
46 KiB
Plaintext
Battery Powered Linux Mini-HOWTO
|
||
|
||
David Lechnyr
|
||
|
||
<david@lechnyr.com>
|
||
Revision History
|
||
Revision 2.31 2003-07-30 Revised by: drl
|
||
Minor updates
|
||
Revision 2.0 2002-10-08 Revised by: drl
|
||
Major updates and conversion to SGML
|
||
Revision 1.0 1997-12-21 Revised by: hm
|
||
Initial draft by Hanno Muller
|
||
|
||
|
||
This document describes how to optimize and configure power management on a
|
||
ready-configured Linux system for use on battery-powered laptops. This will
|
||
be helpful for everyone who runs Linux on a portable computer system. APM/
|
||
ACPI methods of power management are discussed along with power saving tips
|
||
and techniques. There is also some discussion about the different types of
|
||
batteries available.
|
||
|
||
-----------------------------------------------------------------------------
|
||
Table of Contents
|
||
1. Power Management
|
||
1.1. Advanced Power Management (APM)
|
||
1.2. Advanced Configuration and Power Interface (ACPI)
|
||
1.3. APM vs. ACPI: Which one?
|
||
1.4. SMP, Hyper-Threading, IA64 & NUMA
|
||
|
||
|
||
2. DPMS
|
||
2.1. Normal
|
||
2.2. Standby
|
||
2.3. Suspend
|
||
2.4. Off
|
||
|
||
|
||
3. Power Management Methods
|
||
3.1. swsusp(8)
|
||
3.2. hdparm(8)
|
||
3.3. sysklogd(8)
|
||
3.4. XFree86
|
||
3.5. KDE 3.1
|
||
3.6. Energy Star
|
||
3.7. Swap File
|
||
3.8. tmpfs
|
||
3.9. Miscellaneous Tuning
|
||
3.10. Power Saving Myths
|
||
|
||
|
||
4. Types of Batteries
|
||
4.1. Nickel Cadmium (Ni-Cd)
|
||
4.2. Nickel Metal Hydride (Ni-MH)
|
||
4.3. Lithium Ion (Li-ion)
|
||
4.4. Smart Batteries
|
||
4.5. General Battery Care
|
||
|
||
|
||
5. Appendix
|
||
|
||
1. Power Management
|
||
|
||
If you have a relatively recent x86 laptop, odds are it supports either
|
||
Advanced Power Management (APM) or Advanced Configuration and Power Interface
|
||
(ACPI). ACPI is the newer of the two technologies and puts power management
|
||
in the hands of the operating system, allowing for more intelligent power
|
||
management than is possible with BIOS controlled APM. This is most useful for
|
||
battery-powered laptops. You can only have one power management interface in
|
||
control of your machine at a time, so it's important you decide which method
|
||
best suits your situation.
|
||
-----------------------------------------------------------------------------
|
||
|
||
1.1. Advanced Power Management (APM)
|
||
|
||
Advanced Power Management (APM) allows your computer's BIOS to control your
|
||
system's power management without the knowledge of the operating system. The
|
||
advantages to APM under Linux are that it's stable, well supported by Linux
|
||
vendors and has a solid history behind it. However, not much development has
|
||
been done with it over the past few years.
|
||
|
||
To use it, you'll need to enable APM in the kernel:
|
||
+---------------------------------------------------------------------------+
|
||
| [*] Power Management support |
|
||
| <*> Advanced Power Management BIOS support |
|
||
| [ ] Ignore USER SUSPEND (NEW) |
|
||
| [ ] Enable PM at boot time (NEW) |
|
||
| [ ] Make CPU Idle calls when idle (NEW) |
|
||
| [ ] Enable console blanking using APM (NEW) |
|
||
| [ ] RTC stores time in GMT (NEW) |
|
||
| [ ] Allow interrupts during APM BIOS calls (NEW) |
|
||
| [ ] Use real mode APM BIOS call to power off (NEW) |
|
||
+---------------------------------------------------------------------------+
|
||
|
||
Most of the other APM options exist as work-arounds for known problems with
|
||
specific hardware devices, so you'll probably only want to enable the first
|
||
one (CONFIG_APM).
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Advanced Power Management BIOS support (CONFIG_APM): You'll need to
|
||
enable this in order to do anything useful with APM. User-space programs
|
||
will receive notification of APM events (e.g., battery status change) and
|
||
a /proc/apm device will provide you with battery status information.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Ignore USER SUSPEND (CONFIG_APM_IGNORE_USER_SUSPEND): This is a
|
||
workaround for NEC Versa M notebooks.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Enable PM at boot time (CONFIG_APM_DO_ENABLE): Although it sounds nifty,
|
||
most machines do not require this feature to be enabled and in fact can
|
||
hang some systems at boot time.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Make CPU Idle calls when idle (CONFIG_APM_CPU_IDLE): On some machines,
|
||
this option provides increased power savings. On others, it will hang the
|
||
system at boot time. Use with caution.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Enable console blanking using APM (CONFIG_APM_DISPLAY_BLANK): Instead of
|
||
blanking the virtual console actually turn off the screen. This won't
|
||
work with X-Windows and actually can cause more problems that it solves.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>RTC stores time in GMT (CONFIG_APM_RTC_IS_GMT): If you want to store GMT
|
||
(Greenwich Mean Time) in your RTC (Real Time Clock), say yes here.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Allow interrupts during APM BIOS calls (CONFIG_APM_ALLOW_INTS): This is a
|
||
workaround for some IBM Thinkpads that hang while suspending.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Use real mode APM BIOS call to power off
|
||
(CONFIG_APM_REAL_MODE_POWER_OFF): This is a workaround for a number of
|
||
broken BIOSes. If your computer crashes instead of powering off properly,
|
||
turn this on.
|
||
|
||
|
||
You'll want to install the APM daemon from [http://www.worldvisions.ca/
|
||
~apenwarr/apmd/] http://www.worldvisions.ca/~apenwarr/apmd/ and configure
|
||
your system startup scripts to activate it on boot:
|
||
+---------------------------------------------------------------------------+
|
||
|# Start the APM daemon if it exists and if APM is enabled in the kernel |
|
||
|if [ -x /usr/sbin/apmd -a -d /proc/apm ]; then |
|
||
| if cat /proc/apm 1> /dev/null 2> /dev/null ; then |
|
||
| echo "Starting APM daemon: /usr/sbin/apmd" |
|
||
| /usr/sbin/apmd |
|
||
| fi |
|
||
|fi |
|
||
+---------------------------------------------------------------------------+
|
||
|
||
The APM daemon is actually made up of three primary programs:
|
||
|
||
<EFBFBD><EFBFBD>*<2A>apmd - handles power management tasks
|
||
|
||
<EFBFBD><EFBFBD>*<2A>apm - a command-line tool to print the current battery status or suspend
|
||
the computer
|
||
|
||
<EFBFBD><EFBFBD>*<2A>xapm - a simple battery meter for X
|
||
|
||
|
||
If you're looking for a simple, "works out of the box" approach to power
|
||
management for your Laptop, APM is definitely the way to go.
|
||
|
||
A simple script to notify you how much battery time is remaining can be added
|
||
to your ~/.profile file:
|
||
+---------------------------------------------------------------------------+
|
||
|if [ -f /proc/apm ]; then |
|
||
| DUMMY=`cat /proc/apm | cut -d" " -f 7` |
|
||
| # Don't display when fully charged |
|
||
| if [ "$DUMMY" != "99%" ]; then |
|
||
| LEVEL=`cat /proc/apm | sed -e "s/^.*% //"` |
|
||
| echo "Battery at $DUMMY ($LEVEL)" |
|
||
| fi |
|
||
|fi |
|
||
+---------------------------------------------------------------------------+
|
||
-----------------------------------------------------------------------------
|
||
|
||
1.2. Advanced Configuration and Power Interface (ACPI)
|
||
|
||
Advanced Configuration and Power Interface (ACPI) is the successor to APM,
|
||
which places the responsibility of power management away from the BIOS and
|
||
into the hands of the operating system. ACPI Linux is newer than APM Linux,
|
||
more flexible in responding to power management events, has seen much more
|
||
development as of late, and as a result of all this is prone to its own share
|
||
of bugs from time to time.
|
||
|
||
If you're into cutting-edge development and are not intimidated with kernel
|
||
builds and applying patches against source code, ACPI is worth consideration.
|
||
|
||
There are two parts to ACPI under Linux: The ACPI driver built into the
|
||
kernel itself, and the ACPI daemon (ACPID). ACPID in its current incarnation
|
||
is pretty simple: monitor /proc/acpi/event and do things in response. Even if
|
||
you don't load the daemon, you'll still get the benefit of ACPI features
|
||
built into the kernel such as processor thermal support.
|
||
|
||
You can determine which version of the ACPI driver you are using, along with
|
||
supported suspend states, by using:
|
||
+---------------------------------------------------------------------------+
|
||
|bash $ cat /proc/acpi/info |
|
||
|version: 20030619 |
|
||
|states: S0 S1 S3 S4 S4 S5 |
|
||
+---------------------------------------------------------------------------+
|
||
|
||
ACPI development is progressing at a steady rate, so you might want to
|
||
consider [http://sourceforge.net/project/showfiles.php?group_id=36832]
|
||
patching your kernel against any recent updates to the kernel-level ACPI
|
||
code. Once you have downloaded the patch for your specific kernel, you can
|
||
patch it with something like:
|
||
+---------------------------------------------------------------------------+
|
||
|bash$ gunzip acpi-[version-kernel].diff.gz |
|
||
|bash# cd /usr/src/linux-[version] |
|
||
|bash# patch -Np1 -i ../acpi-[version-kernel].diff |
|
||
+---------------------------------------------------------------------------+
|
||
|
||
You'll want to recompile your kernel after this, of course:
|
||
+---------------------------------------------------------------------------+
|
||
| [*] ACPI Support |
|
||
| [ ] CPU Enumeration Only |
|
||
| <*> AC Adapter |
|
||
| <*> Battery |
|
||
| <*> Button |
|
||
| <*> Fan |
|
||
| <*> Processor |
|
||
| <*> Thermal Zone |
|
||
| < > ASUS Laptop Extras |
|
||
| < > Toshiba Laptop Extras |
|
||
| [*] Debug Statements |
|
||
+---------------------------------------------------------------------------+
|
||
|
||
You'll also want to install the ACPID daemon from [http://sourceforge.net/
|
||
project/showfiles.php?group_id=33140] http://sourceforge.net/project/
|
||
showfiles.php?group_id=33140 and configure your system startup scripts to
|
||
activate it on boot:
|
||
+---------------------------------------------------------------------------+
|
||
|if [ -x /usr/sbin/acpid -a -d /proc/acpi ]; then |
|
||
| echo "Starting ACPID Daemon: /usr/sbin/acpid" |
|
||
| /usr/sbin/acpid |
|
||
|fi |
|
||
+---------------------------------------------------------------------------+
|
||
|
||
A bit of history... Microsoft was the first vendor to implement ACPI. This is
|
||
both good and bad. It is good because when you buy a system, you can pretty
|
||
much guarantee that it has passed Microsoft's hardware compliance tests,
|
||
including the test of its ACPI implementation. However, these tests come up
|
||
short in that they do not indicate compliance with the ACPI specification,
|
||
but rather with Microsoft's implementation of ACPI. When that same machine is
|
||
used with Linux, some classes of errors that did not manifest themselves
|
||
under Windows may become apparent. To protect against this problem, the Linux
|
||
ACPI driver maintains a "bad BIOS" blacklist of known BIOS's that are known
|
||
to not be ACPI compliant, and as a result will refuse to enable ACPI if your
|
||
system is listed.
|
||
|
||
Many manufacturers are now validating that their systems run on Linux.
|
||
However, they use major Linux distributions with the default kernel. This
|
||
means that it is somewhat difficult to get OEMs to ensure that their systems
|
||
work with ACPI-enabled Linux until a major Linux distribution ships an ACPI
|
||
kernel. This presents a slight dilemma in that Linux distributions want to
|
||
ship kernels that run on as many systems as possible, but there have been
|
||
some positive moves in this area lately.
|
||
|
||
To conserve energy while remaining quickly available, ACPI-compatible PCs may
|
||
enter system sleep states. The ACPI specification defines five of these
|
||
states, known as S-states. Unlike processor sleep states, no work is done by
|
||
the system under S-states. Each state introduces greater power savings but
|
||
requires commensurately more time to awaken and begin performing work. These
|
||
are patterned on system states from the APM standard, a predecessor of ACPI.
|
||
|
||
Full details on ACPI sleep states are available at [http://
|
||
acpi.sourceforge.net/documentation/sleep.html] http://acpi.sourceforge.net/
|
||
documentation/sleep.html. Processor states are described at [http://
|
||
acpi.sourceforge.net/documentation/processor.html] http://
|
||
acpi.sourceforge.net/documentation/processor.html.
|
||
|
||
For more specific background information on ACPI itself, you can visit the
|
||
ACPI website at [http://www.acpi.info] http://www.acpi.info
|
||
-----------------------------------------------------------------------------
|
||
|
||
1.3. APM vs. ACPI: Which one?
|
||
|
||
There are currently two competing standards for providing power management:
|
||
APM and ACPI. Both cannot be used at the same time, so which one is best for
|
||
your situation? If you have a relatively recent (>2.4.20) kernel and are not
|
||
intimidated by kernel builds and patching source code, you'll find many
|
||
benefits with the flexibility of ACPI. If you just want to enable generic
|
||
power management, or are using an older machine, choose APM. Neither method
|
||
spins down idle hard drives; use hdparm for that instead. Either way, your
|
||
system's BIOS must correctly support the power management scheme you'd like
|
||
to use as well; if your system does not fully support either standard, some
|
||
of the power management options might crash your system and/or cause data
|
||
loss. You have been warned!
|
||
|
||
Even if you don't enable power management on your x86-laptop, Linux will
|
||
always issue the HLT instruction to your processor whenever nothing needs to
|
||
be done [1]. Many Microsoft Windows CPU cooling program use this technique.
|
||
This results in lowering the power consumption of your CPU. Note that the
|
||
system doesn't power down when it receives the HLT instruction; it just stops
|
||
executing instructions until there is an interrupt.
|
||
|
||
There is generally no advantage to enabling either type of power management
|
||
on servers or workstations that do not fall into these categories.
|
||
-----------------------------------------------------------------------------
|
||
|
||
1.4. SMP, Hyper-Threading, IA64 & NUMA
|
||
|
||
Some SMP system manufacturers may have omitted the pre-ACPI tables used for
|
||
SMP configurations. In this case, ACPI is required.
|
||
|
||
If you have a newer system that supports [http://www.intel.com/technology/
|
||
hyperthread/] Hyper-Threading, you will need to enable ACPI (and, of course,
|
||
SMP). Without it, your Linux system may be unable to discover and initialize
|
||
all of the virtual processors.
|
||
|
||
IA64 machines require ACPI as well. Additionally, NUMA servers are starting
|
||
to require it for proper initialization.
|
||
-----------------------------------------------------------------------------
|
||
|
||
2. DPMS
|
||
|
||
DPMS (Display Power Management Signaling) is a standard to reduce power
|
||
consumption in monitors. Typically, both the monitor and the video card must
|
||
support the DPMS standard in order to receive any benefit from it. DPMS
|
||
specifies four modes of operation (in order of increasing power savings):
|
||
"Normal", "Standby", "Suspend" and "Off". Two signal lines, "Horizontal Sync"
|
||
and "Vertical Sync" provide a method for signaling these four different
|
||
states to a DPMS monitor.
|
||
|
||
A good technical resource on DPMS is available at [http://
|
||
webpages.charter.net/dperr/dpms.htm] http://webpages.charter.net/dperr/
|
||
dpms.htm.
|
||
-----------------------------------------------------------------------------
|
||
|
||
2.1. Normal
|
||
|
||
Normal means just that -- the monitor is fully powered and on. LCD laptop
|
||
panels and LCD flat screens use considerably less power than traditional CRT
|
||
monitors.
|
||
-----------------------------------------------------------------------------
|
||
|
||
2.2. Standby
|
||
|
||
Standby is used to describe a very minor power savings level. This setting
|
||
usually involves blanking the screen by turning off the electron (RGB) gun.
|
||
However, the power supply is left on and the tube filaments energized. When
|
||
you need to use the monitor again, the monitor will come back on very
|
||
quickly. This option requires DPMS monitor and video card support along with
|
||
enabling DPMS in XFree86. Standby is sometimes referred to as hsync suspend
|
||
mode since the horizontal sync signal is turned off to signal this power
|
||
management state to a DPMS monitor.
|
||
-----------------------------------------------------------------------------
|
||
|
||
2.3. Suspend
|
||
|
||
Suspend is used to describe a very strong low power state. This setting
|
||
usually involves the same power conservation as Standby however in addition
|
||
the power supply to the monitor is turned off. This option requires DPMS
|
||
monitor and video card support along with enabling DPMS in XFree86. Suspend
|
||
is sometimes referred to as vsync suspend mode since the vertical sync signal
|
||
is turned off to signal this power management state to a DPMS monitor.
|
||
-----------------------------------------------------------------------------
|
||
|
||
2.4. Off
|
||
|
||
Off usually means just that -- the computer monitor is turned off. Usually, a
|
||
small auxiliary circuit stays on to monitor the signals from the computer to
|
||
turn the monitor back on when data needs to be displayed to the screen.
|
||
Obviously, this keeps power consumption to a bare minimum (if not zero).
|
||
While the power saving is substantial, to reactivate the monitor may take
|
||
several seconds. This option requires DPMS monitor and video card support
|
||
along with enabling DPMS in XFree86. Both the horizontal and vertical sync
|
||
signals are turned off to signal this power management state to a DPMS
|
||
monitor.
|
||
-----------------------------------------------------------------------------
|
||
|
||
3. Power Management Methods
|
||
|
||
The basic goal of any power management technique is to reduce an entity's
|
||
consumption. In the case of laptop power management, our focus is on
|
||
decreasing CPU and hard drive usage. To make things a bit simpler, this is
|
||
broken down into obvious, semi-obvious, and non-obvious techniques. Granted,
|
||
your mileage may vary.
|
||
-----------------------------------------------------------------------------
|
||
|
||
3.1. swsusp(8)
|
||
|
||
Suspend to Disk (S2D) is still an elusive task under Linux. The main project
|
||
at the moment is swsusp, available at [http://sourceforge.net/projects/
|
||
swsusp] http://sourceforge.net/projects/swsusp. It's still fairly new and
|
||
requires a bit of configuration to enable it.
|
||
-----------------------------------------------------------------------------
|
||
|
||
3.2. hdparm(8)
|
||
|
||
hdparm is a Linux shell utility that can be used to spin down and improve the
|
||
performance of various ATA/IDE drives. If it's not included with your system,
|
||
you can fetch the source from [http://freshmeat.net/redir/hdparm/4062/
|
||
url_homepage/hardware] http://freshmeat.net/redir/hdparm/4062/url_homepage/
|
||
hardware. For example, the following provides 32-bit IO support with sync
|
||
(-c3), DMA support (-d1), Advanced Power Management (-B128), write-caching
|
||
(-W1), disk spin down after five minutes (-S60). gains me tremendous
|
||
performance with added power savings. Note that your mileage may vary, and
|
||
you'll want to adjust this for your specific system to prevent data loss
|
||
(especially the -B and -m flags!).
|
||
|
||
In the following example, we run some read/write benchmarks of our hard drive
|
||
before and after using hdparm. Note that while our cache reads remain about
|
||
the same, our actual physical reads from the drive increase tremendously! If
|
||
you like living on the edge, you can play with the -m, -c, -B, and -u
|
||
switches with caution (see the man page).
|
||
+---------------------------------------------------------------------------+
|
||
|bash# hdparm -tT /dev/hda |
|
||
|Timing buffer-cache reads: 588 MB in 2.01 seconds = 292.15 MB/sec |
|
||
|Timing buffered disk reads: 14 MB in 3.46 seconds = 4.05 MB/sec |
|
||
| |
|
||
|bash# hdparm -k1 -K1 -c3 -d1 -W1 /dev/hda |
|
||
|bash# hdparm -tT /dev/hda |
|
||
|Timing buffer-cache reads: 596 MB in 2.01 seconds = 297.01 MB/sec |
|
||
|Timing buffered disk reads: 72 MB in 3.05 seconds = 23.58 MB/sec |
|
||
+---------------------------------------------------------------------------+
|
||
-----------------------------------------------------------------------------
|
||
|
||
3.3. sysklogd(8)
|
||
|
||
Examine your /etc/syslog.conf file for unnecessary logging activity and to
|
||
optimize its performance. If you don't want to log any system activity,
|
||
consider disabling syslogd and klogd entirely or, at the very least, minimize
|
||
the amount of logging your system performs. You can also prefix each entry
|
||
with the minus sign (-) to omit syncing the file after each log entry [2].
|
||
For example, this will log anything with a priority of info or higher, but
|
||
lower than warning, to /var/log/messages or /var/log/mail without needing to
|
||
sync to disk after each write. Since we want to keep all messages with a
|
||
priority of warning, this will be logged to a different file without
|
||
disabling disk syncing (to prevent data loss in the event of a system crash).
|
||
+---------------------------------------------------------------------------+
|
||
|*.warning /var/log/syslog |
|
||
|*.info;*.!warning;mail.none -/var/log/messages |
|
||
|mail.info;mail.!warning -/var/log/mail |
|
||
+---------------------------------------------------------------------------+
|
||
|
||
Another item to be aware of is the -- MARK -- messages that syslogd(8)
|
||
writes. This will affect your hard drive inactivity settings. You can simply
|
||
disable this by running syslogd(8) with:
|
||
|
||
+---------------------------------------------------------------------------+
|
||
|if [ -x /usr/sbin/syslogd -a -x /usr/sbin/klogd ]; then |
|
||
| # '-m 0' disabled 'MARK' messages |
|
||
| /usr/sbin/syslogd -m 0 |
|
||
| sleep 1 |
|
||
| # '-c 3' displays errors on console |
|
||
| # '-x' turns off broken EIP translation |
|
||
| /usr/sbin/klogd -c 3 -x |
|
||
|fi |
|
||
+---------------------------------------------------------------------------+
|
||
-----------------------------------------------------------------------------
|
||
|
||
3.4. XFree86
|
||
|
||
There are essentially two different types of screen blanking that can be
|
||
performed under XFree86: BlankTime and DPMS. The first is simply a fake
|
||
"blanking" effect that doesn't actually save any power. The others are
|
||
specific only to DPMS-compliant monitors, and must be specifically enabled to
|
||
take effect. They are located in your XF86Config file, which normally resides
|
||
in /etc/X11/XF86Config.
|
||
|
||
If you have a DPMS-compliant monitor, you might want to try enabling support
|
||
for it under the Monitor section of your XF86Config file:
|
||
|
||
+---------------------------------------------------------------------------+
|
||
|Section "Monitor" |
|
||
| Option "DPMS" |
|
||
|EndSection |
|
||
+---------------------------------------------------------------------------+
|
||
|
||
To manipulate the DPMS functions, you can create/modify the following items
|
||
in the ServerLayout section.
|
||
|
||
+---------------------------------------------------------------------------+
|
||
|Section "ServerLayout" |
|
||
| Option "BlankTime" "10" # Blank the screen in 10 minutes |
|
||
| Option "StandbyTime" "20" # Turn off screen in 20 minutes |
|
||
| Option "SuspendTime" "30" # Full hibernation in 30 minutes |
|
||
| Option "OffTime" "40" # Turn off DPMS monitor |
|
||
|EndSection |
|
||
+---------------------------------------------------------------------------+
|
||
|
||
It's worth noting that BlankTime is not actually a power saving level at all.
|
||
The screen is sent a "fake" blanking effect and defaults to activate after 10
|
||
minutes. Alternately, it can indicate the number of minutes until the
|
||
screensaver should activate. It has nothing to do with DPMS.
|
||
|
||
After activating your changes and restarting X-Windows, you might want to
|
||
examine your logfile to see if your video card has any problems with your
|
||
changes:
|
||
|
||
+---------------------------------------------------------------------------+
|
||
|bash$ egrep "^\(WW|EE\)" /var/log/XFree86.0.log |
|
||
+---------------------------------------------------------------------------+
|
||
|
||
There may be additional options that you can enable for your specific video
|
||
card/chip driver; see the [http://www.xfree86.org/support.html] XFree86
|
||
Documentation website for specifics.
|
||
|
||
Of course, all of this can also be activated "on-the-fly" by using xset(1).
|
||
If you don't have access to your system's XF86Config file, a good place to
|
||
put these commands would be in your ~/.Xsession or ~/.xinitrc file.
|
||
|
||
+--------------------------------------------------------------------------------------------+
|
||
|bash$ xset -dpms # Disable DPMS |
|
||
|bash$ xset +dpms # Enable DPMS |
|
||
|bash$ xset s off # Disable screen blanking |
|
||
|bash$ xset s 150 # Blank the screen after 150 seconds |
|
||
|bash$ xset dpms 300 600 900 # Set standby, suspend, & off times (in seconds) |
|
||
|bash$ xset dpms force standby # Immediately go into standby mode |
|
||
|bash$ xset dpms force suspend # Immediately go into suspend mode |
|
||
|bash$ xset dpms force off # Immediately turn off the monitor |
|
||
|bash$ xset -q # Query current settings |
|
||
+--------------------------------------------------------------------------------------------+
|
||
|
||
If instead you're using the Linux console (not X-Windows), you'll want to use
|
||
setterm(1):
|
||
|
||
+-----------------------------------------------------------------------------------------+
|
||
|bash$ setterm -blank 10 # Blank the screen in 10 minutes |
|
||
|bash$ setterm -powersave on # Put the monitor into VESA power saving mode |
|
||
|bash$ setterm -powerdown 20 # Set the VESA powerdown to 20 minutes |
|
||
+-----------------------------------------------------------------------------------------+
|
||
-----------------------------------------------------------------------------
|
||
|
||
3.5. KDE 3.1
|
||
|
||
3.5.1. Display Power Control
|
||
|
||
Assuming you've configured XFree86 to support DPMS, simply run kcontrol and
|
||
choose Power Control/Display Power Control. From here, you can configure
|
||
Standby, Suspend, and Power off settings for your monitor.
|
||
-----------------------------------------------------------------------------
|
||
|
||
3.5.2. Laptop Battery
|
||
|
||
Assuming you've configured your kernel to support either APM or ACPI, simply
|
||
run kcontrol and choose Power Control/Laptop Battery. From here, you can
|
||
configure the various settings for your system based on the level of battery
|
||
power remaining.
|
||
|
||
It's worth noting that some people running ACPI tend to see the following
|
||
message:
|
||
+-----------------------------------------------------------------------------+
|
||
|Your computer seems to have a partial ACPI installation. ACPI was probably |
|
||
|enabled, but some of the sub-options were not - you need to enable at least |
|
||
|'AC Adaptor' and 'Control Method Battery' and then rebuild your kernel. |
|
||
+-----------------------------------------------------------------------------+
|
||
|
||
If you see this, either ACPI is not installed or, more likely, KDE does not
|
||
recognize your particular Linux ACPI Subsystem. If patching the kernel with
|
||
any ACPI updates does not resolve this, you must either not use this KDE
|
||
function or, alternately, revert back to using APM.
|
||
-----------------------------------------------------------------------------
|
||
|
||
3.6. Energy Star
|
||
|
||
[http://www.energystar.gov] Energy Star is a United States government-backed
|
||
program to promote energy efficiency standards. Of interest:
|
||
|
||
<EFBFBD><EFBFBD>*<2A>An ENERGY STAR qualified computer, in sleep mode, uses 70% less
|
||
electricity than computers without power management features.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>An ENERGY STAR qualified monitor, in sleep mode, uses 90% less
|
||
electricity than monitors without power management features.
|
||
|
||
|
||
Typically, Energy Star savings is accomplished by other power management
|
||
settings and is not, in and of itself, a power management technique.
|
||
-----------------------------------------------------------------------------
|
||
|
||
3.7. Swap File
|
||
|
||
Consider disabling your swap file in /etc/fstab to reduce hard drive access.
|
||
If you've got lots of memory, this is definitely the way to go. One way to
|
||
tell if you need your swap file is to enable it, use your system for a period
|
||
of time, and examine /proc/meminfo and /proc/swaps to determine how much free
|
||
memory you've got on average, and whether or not your swap file is even being
|
||
utilized.
|
||
|
||
For example, today I've compiled several intensive programs and have been
|
||
running my laptop for about eight hours straight. A simple examination of my
|
||
system reveals:
|
||
+---------------------------------------------------------------------------+
|
||
|bash$ cat /proc/swaps |
|
||
|Filename Type Size Used |
|
||
|Priority |
|
||
|/dev/hda3 partition 136544 0 -1 |
|
||
| |
|
||
|bash$ cat /proc/meminfo |
|
||
|MemTotal: 513880 kB |
|
||
|MemFree: 254820 kB |
|
||
|Buffers: 42812 kB |
|
||
|Cached: 142880 kB |
|
||
|SwapCached: 0 kB |
|
||
|Active: 159644 kB |
|
||
|Inactive: 76888 kB |
|
||
|HighTotal: 0 kB |
|
||
|HighFree: 0 kB |
|
||
|LowTotal: 513880 kB |
|
||
|LowFree: 254820 kB |
|
||
|SwapTotal: 136544 kB |
|
||
|SwapFree: 136544 kB |
|
||
|Dirty: 0 kB |
|
||
|Writeback: 0 kB |
|
||
|Mapped: 86148 kB |
|
||
|Slab: 10748 kB |
|
||
|Committed_AS: 203944 kB |
|
||
|PageTables: 1140 kB |
|
||
|VmallocTotal: 516076 kB |
|
||
|VmallocUsed: 1468 kB |
|
||
|VmallocChunk: 514604 kB |
|
||
|HugePages_Total: 0 |
|
||
|HugePages_Free: 0 |
|
||
|Hugepagesize: 4096 kB |
|
||
+---------------------------------------------------------------------------+
|
||
|
||
Given this, I'd opt to disable my swapfile if this is any indicator of my
|
||
future usage.
|
||
-----------------------------------------------------------------------------
|
||
|
||
3.8. tmpfs
|
||
|
||
Compile your kernel with tmpfs (temporary file system) enabled and mount your
|
||
/tmp directory using it. The useful bit here is that nothing will be written
|
||
to your hard drive on this mount point as it will act like a RAM disk
|
||
(however nothing will be saved either). The advantage of tmpfs over the more
|
||
traditional ramfs is that it lives in the kernel internal cache and grows and
|
||
shrinks to accommodate the files placed there. See your kernel's
|
||
Documentation/filesystems/tmpfs.txt for full information. If you don't
|
||
specify a maximum size, it will default to a ceiling limit of half your
|
||
available memory. An example /etc/fstab with 100MB temporary ram file mounted
|
||
on /tmp would look like:
|
||
+---------------------------------------------------------------------------+
|
||
|tmpfs /tmp tmpfs size=100m,mode=1777 0 0 |
|
||
+---------------------------------------------------------------------------+
|
||
-----------------------------------------------------------------------------
|
||
|
||
3.9. Miscellaneous Tuning
|
||
|
||
Modifying /proc/sys/vm/bdflush allows a user to specify under what
|
||
circumstances dirty buffers are flushed to disk, how many such buffers exist,
|
||
etc. Details are in linux_src_tree/Documentation/sysctl/vm.txt (thanks to
|
||
Marc Liberatore for pointing this out).
|
||
|
||
Boot your system and list the currently loaded modules with lsmod. Anything
|
||
listed here most likely needs to be loaded on a regular basis; compiling
|
||
these in as part of your kernel rather than as loadable modules may help to
|
||
decrease the amount of time they must be loaded from disk, and to a very
|
||
minor degree, decrease the amount of disk access required to start your
|
||
system.
|
||
|
||
Examine your crontab settings to see if anything is being run on a regular
|
||
basis. Comment out any unnecessary items. Don't forget to examine every
|
||
user's crontab, including the user 'nobody'. If you don't need to schedule
|
||
any background activity, consider disabling crond alltogether. The same
|
||
advice goes for atd.
|
||
|
||
If you run httpd to test and/or develop web pages, try altering the values of
|
||
MinSpareServers and StartServers to 1. Don't define any CustomLogging or at
|
||
least increase the value of LogLevel to warn. If you're really sure of
|
||
yourself, you can change the ErrorLog directive to point to /dev/null.
|
||
|
||
Consider creating a power-saving script that will immediately take your
|
||
laptop into low-power mode:
|
||
|
||
+---------------------------------------------------------------------------+
|
||
|#!/bin/sh |
|
||
|if [ -x /usr/sbin/hdparm ]; then |
|
||
| hdparm -y /dev/hda |
|
||
|fi |
|
||
| |
|
||
|if [ -x /usr/X11R6/bin/xset ]; then |
|
||
| xset dpms force off |
|
||
|fi |
|
||
+---------------------------------------------------------------------------+
|
||
|
||
Additionally, it's worth considering anything in the following areas:
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Adjust your system's BIOS settings to decrease or turn off your display's
|
||
backlight.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Adjust your system's BIOS settings to reduce the CPU clock speed while on
|
||
battery.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Avoid using PCMCIA devices while on battery. Better yet, eject your
|
||
PCMCIA cards when not in use.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Avoid using external devices with your computer while on battery. This
|
||
includes printers, external monitors, zip drives, and portable cameras.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Avoid using built-in devices while on battery. This includes cdroms and
|
||
floppy drives.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Use simple software. A full blown multimedia application will create a
|
||
lot more system load and disk activity than a small simple word processor
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Use a simple window manager. While Gnome and KDE are nice, the extra time
|
||
it takes to load and run is not worth it while on battery power. One
|
||
nifty idea is to use a different xinitrc script to launch a different,
|
||
more simple window manager based on whether or not your system is on
|
||
battery power.
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
3.10. Power Saving Myths
|
||
|
||
It used to be beneficial to recompile the Linux PCMCIA drivers to allow the
|
||
slots to have APM power support. However, most of the functionality of these
|
||
drivers are now built into the kernel itself. If you're interested in
|
||
specifics, the PCMCIA project page is available at [http://sourceforge.net/
|
||
projects/pcmcia-cs/] http://sourceforge.net/projects/pcmcia-cs/.
|
||
|
||
Some people believe that APM offers better power savings over ACPI, and
|
||
vice-versa. While their power management techniques differ, in actual
|
||
battery-usage tests, both reportedly perform about the same.
|
||
|
||
Contrary to popular belief, Lithium Ion (see below) batteries do suffer from
|
||
a memory effect. Luckily, the effect is not large over the lifespan of a
|
||
typical battery (3-4 years). Anyone who tells you different is selling
|
||
something.
|
||
-----------------------------------------------------------------------------
|
||
|
||
4. Types of Batteries
|
||
|
||
There are currently three types of batteries commonly used for laptops:
|
||
Nickel Cadmium, Nickel Metal Hydride, and Lithium Ion.
|
||
-----------------------------------------------------------------------------
|
||
|
||
4.1. Nickel Cadmium (Ni-Cd)
|
||
|
||
Nickel Cadmium (Ni-Cd) batteries were the standard technology for years, but
|
||
today they are out of date and new laptops don't use them anymore. They are
|
||
heavy and very prone to the "memory effect". When recharging a NiCd battery
|
||
that has not been fully discharged, it "remembers" the old charge and
|
||
continues there the next time you use it. The memory effect is caused by
|
||
crystallization of the battery's substances and can permanently reduce your
|
||
battery's lifetime, even make it useless. To avoid it, you should completely
|
||
discharge the battery and then fully recharge it again at least once every
|
||
few weeks. As this battery contains cadmium, a toxic material, it should
|
||
always be recycled or disposed of properly.
|
||
|
||
NiCad batteries, and to a some degree NiMH batteries, suffer from what's
|
||
called the memory effect. Memory Effect means that if a battery is repeatedly
|
||
only partially discharged before recharging, the battery will forget that it
|
||
can further discharge. The best way to prevent this situation is to fully
|
||
charge and discharge your battery on a regular basis.
|
||
-----------------------------------------------------------------------------
|
||
|
||
4.2. Nickel Metal Hydride (Ni-MH)
|
||
|
||
Nickel Metal Hydride (Ni-MH) batteries are the cadmium-free replacement for
|
||
NiCad. They are less affected by the memory effect than NiCd and thus require
|
||
less maintenance and conditioning. However, they have problems at very high
|
||
or low room temperatures. And even though they use less hazardous materials
|
||
(i.e., they do not contain heavy metals), they cannot be fully recycled yet.
|
||
Another main difference between NiCad and NiMH is that NiMH battery offers
|
||
higher energy density than NiCads. In other words, the capacity of a NiMH is
|
||
approximately twice the capacity of its NiCad counterpart. What this means
|
||
for you is increased run-time from the battery with no additional bulk or
|
||
weight.
|
||
-----------------------------------------------------------------------------
|
||
|
||
4.3. Lithium Ion (Li-ion)
|
||
|
||
Lithium Ion (Li-ion) are the new standard for portable power. Li-ion
|
||
batteries produce the same energy as NiMH but weighs approximately 20%-35%
|
||
less. They do not suffer significantly from the memory effect unlike their
|
||
NiMH and Ni-Cd counterparts. Their substances are non-hazardous to the 0.
|
||
Because lithium ignites very easily, they require special handling.
|
||
Unfortunately, few consumer recycling programs have been established for
|
||
Li-ion batteries at this point in time.
|
||
-----------------------------------------------------------------------------
|
||
|
||
4.4. Smart Batteries
|
||
|
||
Smart batteries are not really a different type of battery, but they do
|
||
deserve special mention. Smart batteries have internal circuit boards with
|
||
chips which allow them to communicate with the laptop and monitor battery
|
||
performance, output voltage and temperature. Smart batteries will generally
|
||
run 15% longer due to their increased efficiency and also give the computer
|
||
much more accurate "fuel gauge" capabilities to determine how much battery
|
||
run time is left before the next recharge is required.
|
||
-----------------------------------------------------------------------------
|
||
|
||
4.5. General Battery Care
|
||
|
||
Even if the battery case looks the same, you cannot just upgrade to another
|
||
battery technology unless your laptop has been pre-configured from the
|
||
manufacturer to accept more than one type of battery type, since the
|
||
recharging process is different for each of the three types of batteries.
|
||
|
||
A battery that is not used for a long time will slowly discharge itself. Even
|
||
with the best of care, a battery needs to be replaced after 500 to 1000
|
||
recharges. But still it is not recommended to run a laptop without the
|
||
battery while on ac power -- the battery often serves as a big capacitor to
|
||
protect against voltage peaks from your ac outlet.
|
||
|
||
As the manufacturers change the shapes of their batteries every few months,
|
||
you might have problems to find a new battery for your laptop in a few years
|
||
from now. This is somewhat of a concern only if you anticipate using the same
|
||
laptop several years from now. If in doubt, buy a spare battery now - before
|
||
it's out of stock.
|
||
|
||
New batteries come in a discharged condition and must be fully charged before
|
||
use. It is recommended that you fully charge and discharge the new battery
|
||
two to four times to allow it to reach its maximum rated capacity. It is
|
||
generally recommend that you perform an overnight charge (approximately
|
||
twelve hours) for this. Note: It is normal for a battery to become warm to
|
||
the touch during charging and discharging. When charging the battery for the
|
||
first time, the device may indicate that charging is complete after just 10
|
||
or 15 minutes. This is a normal with rechargeable batteries. New batteries
|
||
are hard for the device to charge; they have never been fully charged and are
|
||
not broken in. Sometimes the device's charger will stop charging a new
|
||
battery before it is fully charged. If this happens, remove the battery from
|
||
the device and then reinsert it. The charge cycle should begin again. This
|
||
may happen several times during the first battery charge. Don't worry; it's
|
||
perfectly normal. Keep the battery healthy by fully charging and then fully
|
||
discharging it at least once every two to three weeks. Exceptions to the rule
|
||
are Li-Ion batteries which do not suffer from the memory effect.
|
||
|
||
Batteries should be stored in a discharged state since they can
|
||
self-discharge and may become inactive after a long storage period. They
|
||
should not be stored for any length of time while connected to the laptop.
|
||
High humidity and temperatures can cause the battery to deteriorate, so these
|
||
should be avoided during storage.
|
||
|
||
Do not remove and carry a battery pack in your pocket, purse, or other
|
||
container where metal objects (such as car keys or paper clips) could
|
||
short-circuit the battery terminals. The resulting excessive current flow can
|
||
cause extremely high temperatures and may result in damage to the battery
|
||
pack or cause fire or burns.
|
||
-----------------------------------------------------------------------------
|
||
|
||
5. Appendix
|
||
|
||
This document was lovingly handcrafted on a Dell Latitude C400 laptop running
|
||
Slackware Linux 9.0, in case anyone asks.
|
||
|
||
This document would not have been possible without the excellent material
|
||
initially developed by Hanno Muller <kontakt@hanno.de>.
|
||
|
||
Copyright (c) 2003 David Lechnyr. Redistribution and use, with or without
|
||
modification, are permitted provided that the copyright notice, this list of
|
||
conditions and the following disclaimer be included.
|
||
|
||
THIS DOCUMENTATION IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY
|
||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
|
||
Notes
|
||
|
||
[1] source/arch/i386/kernel/process.c
|
||
[2] syslogd.c
|