Minor corrections and updates including document structure

This commit is contained in:
davidrl 2003-05-27 23:07:46 +00:00
parent 7c9e1e5d37
commit 339b038975
1 changed files with 276 additions and 133 deletions

View File

@ -12,6 +12,12 @@
</author>
<revhistory>
<revision>
<revnumber>2.2</revnumber>
<date>2003-05-27</date>
<authorinitials>drl</authorinitials>
<revremark>Minor corrections and updates including document structure</revremark>
</revision>
<revision>
<revnumber>2.0</revnumber>
<date>2002-10-08</date>
@ -74,10 +80,10 @@ of the information contained in this document.</para>
<title>About this document</title>
<para>This document was lovingly handcrafted on a Dell Latitude C400 laptop running Slackware Linux 9.0,
in case anyone asks.</para>
<para>Many thanks to Andrew Grover of the ACPID project whose patience throughout many questions is much appreciated.</para>
</sect2>
</sect1>
<sect1 id="powermgm">
<title>Power Management</title>
<para>If you have a relatively recent x86 laptop, odds are it supports either
@ -90,28 +96,72 @@ important you decide which method best suits your situation.</para>
<sect2 id="apm">
<title>Advanced Power Management (APM)</title>
<para><emphasis>Advanced Power Management (APM)</emphasis> is a specification
for allowing the 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 and has been around for some time, although not much development
has happened with it over the past few years.</para>
<para><emphasis>Advanced Power Management (APM)</emphasis>
is a method for saving power on your computer.
<para>To use it, you'll need to enable APM in the kernel and fetch the APM daemon from
<ulink url="http://www.worldvisions.ca/~apenwarr/apmd/">http://www.worldvisions.ca/~apenwarr/apmd/</ulink>
</para>
This is mostly useful for battery-powered laptops.
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 and has a solid history behind it. However, not much development has been
done with it over the past few years.</para>
<para>To use it, you'll need to enable APM in the kernel. 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).</para>
<itemizedlist>
<listitem><para>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.</para></listitem>
<listitem><para>Ignore USER SUSPEND (CONFIG_APM_IGNORE_USER_SUSPEND):
This is a workaround for NEC Versa M notebooks.</para></listitem>
<listitem><para>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.</para></listitem>
<listitem><para>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.</para></listitem>
<listitem><para>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.</para></listitem>
<listitem><para>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.</para></listitem>
<listitem><para>Allow interrupts during APM BIOS calls (CONFIG_APM_ALLOW_INTS):
This is a workaround for some IBM Thinkpads that hang while
suspending.</para></listitem>
<listitem><para>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.</para></listitem></itemizedlist>
<para>You'll want to install the APM daemon from
<ulink url="http://www.worldvisions.ca/~apenwarr/apmd/">http://www.worldvisions.ca/~apenwarr/apmd/</ulink>
and configure your system startup scripts to activate it on boot:</para>
<screen>
# Start the APM daemon 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
</screen>
<para>The APM daemon is actually made up of three primary programs:</para>
<para>
<itemizedlist>
<listitem><para>apmd - handles power management tasks</para></listitem>
<listitem><para>apm - a command-line tool to print the current battery status or suspend the computer</para></listitem>
<listitem><para>xapm - a simple battery meter for X</para></listitem>
</itemizedlist>
</para>
<para>Currently, most major Linux distributions have not started to configure
ACPI into their kernel, choosing to stick with APM. Therefore, configuration
may be easier with APM depending on your distro's included utilities.</para>
<itemizedlist>
<listitem><para><command>apmd</command> - handles power management tasks</para></listitem>
<listitem><para><command>apm</command> - a command-line tool to print the current battery status or suspend the computer</para></listitem>
<listitem><para><command>xapm</command> - a simple battery meter for X</para></listitem>
</itemizedlist>
<para>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.</para>
@ -128,29 +178,51 @@ time to time.</para>
<para>If you're into cutting-edge development, are running a relatively recent
(>2.4.10) kernel, and are not intimidated with kernel
builds and applying patches against source code, ACPI is the way to go.</para>
builds and applying patches against source code, ACPI is worth consideration.</para>
<para>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 fetch ACPID from
<ulink url="http://acpid.sourceforge.net"> http://acpid.sourceforge.net</ulink>
</para>
into the kernel such as processor thermal support.</para>
<para>When booting your ACPI-enabled system, you can determine which version
of the ACPI driver you are using by looking for something similar to this:
<screen>
ACPI: Subsystem revision 20021002
ACPI: Subsystem revision 20030523
</screen>
ACPI development is progressing at a steady rate, so you might want to consider
<ulink url="http://sourceforge.net/project/showfiles.php?group_id=36832">patching</ulink>
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:
<screen>
$ gunzip acpi-[version]-[kernel].diff.gz
# mv acpi-[version]-[kernel].diff /usr/src/linux-[version]
# cd /usr/src/linux-[version]
# patch -p1 < acpi-[version]-[kernel].diff
</screen>
You'll want to recompile your kernel after this, of course.</para>
<para>You'll also want to install the ACPID daemon from
<ulink url="http://sourceforge.net/project/showfiles.php?group_id=33140">http://sourceforge.net/project/showfiles.php?group_id=33140</ulink>
and configure your system startup scripts to activate it on boot:</para>
<screen>
if [ -x /usr/sbin/acpid -a -d /proc/acpi ]; then
echo "Starting ACPID Daemon: /usr/sbin/acpid"
/usr/sbin/acpid
fi
</screen>
ACPI development is progressing at a steady rate, so you might want to
consider patching your kernel against any recent updates to the kernel-level ACPI code at
<ulink url="http://sourceforge.net/projects/acpi/">http://sourceforge.net/projects/acpi/</ulink>
This is also useful if you are running into problem getting ACPI to work on
your system and are experiencing <emphasis>Ps_execute: method
failed</emphasis> ACPI error messages on boot. You may need to enable ACPI
debugging in the kernel in order to determine if you are having a problem, and
is generally considered a good idea.</para>
<para>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
@ -171,11 +243,6 @@ 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.</para>
<para>Current goals for the ACPI project include the implementation of sleep
support, improvement of power-related daemons and libraries to take advantage
of ACPI, and of course continued improvements in the ACPI driver
itself.</para>
<para>For more specific background information on ACPI itself, you can visit
the ACPI website at
<ulink url="http://www.acpi.info">http://www.acpi.info</ulink>
@ -196,9 +263,9 @@ it for proper initialization as well. There is generally no advantage to
enabling either type of power management on servers or workstations that do not fall into
these categories.</para>
<para>If your computer's BIOS does not offer any power saving settings, you
can use hdparm to define your harddisk's standby period. This will still help
you out a lot, since harddisk activity typically consumes a lot of power.</para>
<para>One item to consider is actual <emphasis>use</emphasis>: Try using your laptop under both APM and ACPI. You'll probably
be suprised if both methods provide approximately the same amount of power savings (hint, hint)!</para>
</sect2>
</sect1>
@ -208,112 +275,160 @@ you out a lot, since harddisk activity typically consumes a lot of power.</para>
<title>Power Management Techniques</title>
<para>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 <emphasis>obvious, semi-obvious,</emphasis> and <emphasis>non-obvious</emphasis> techniques. Granted, your mileage may vary.</para>
<sect2 id="obvious">
<title>Power saving - The obvious stuff</title>
<para>There are some obvious things that you can do to reduce your system's power consumption:</para>
<para><itemizedlist>
<listitem><para>Decrease or turn off your display's backlight when you don't need it</para></listitem>
<listitem><para>While on battery, reducing the CPU clock speed will decrease power consumption, if your laptop's BIOS allows you to control this</para></listitem>
<listitem><para>Avoid using external devices (printer, crt screen, zip drive, portable camera etc.) with your computer while on battery</para></listitem>
<listitem><para>Avoid using any built in device such as a cdrom, floppy drive, or PCMCIA devices unless necessary. PCMCIA cards can also consume a lot of power, so don't leave your modem or network adapter plugged in when it is not in use</para></listitem>
<listitem><para>Use simple software. A full blown multimedia application will create a lot more system load and disk activity than a small simple word processor</para></listitem>
</itemizedlist></para>
<sect2 id="hdparm">
<title>hdparm Tuning</title>
<para><command>hdparm</command> 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
<ulink url="http://freshmeat.net/redir/hdparm/4062/url_homepage/hardware">http://freshmeat.net/redir/hdparm/4062/url_homepage/hardware</ulink>.
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!).</para>
<para>In the following example, we run some read/write benchmarks of our hard drive before and after using <command>hdparm</command>.
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).
<screen>
# 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
# hdparm -k1 -K1 -c3 -d1 -W1 /dev/hda
# 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
</screen>
</para>
</sect2>
<sect2 id="semi">
<title>Power saving - The semi-obvious stuff</title>
<para>hdparm is a Linux shell utility that can be used to improve the performance and power management of various IDE drives. If it's not included with your system, you can fetch the source from <ulink url="http://freshmeat.net/redir/hdparm/4062/url_homepage/hardware"> http://freshmeat.net/redir/hdparm/4062/url_homepage/hardware</ulink> For example, running `hdparm -B128 -c1 -d1 -m16 -S60 -u1 -K1 -k1 -W1 /dev/hda` 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!).</para>
<para>Pop open an xterm window and try running `top -i` while your system isn't doing much of anything. Look for any active processes; any that show up are potential battery drainers. Identification is the first step; the tricky part is determining whether or not you should disable a given daemon or simply modify its behavior.</para>
<para>Examine your syslog.conf file for unnecessary logging. If you don't want to log any system activity, consider disabling syslogd and klogd entirely. If you tend to debug programs from time to time, you can modify or minimize the amount of logging your system will do. For example, to log only messages with a priority of info or higher except for the mail facility, which will be logged only with priorities of error or higher, you can try this:
<sect2 id="syslog">
<title>syslog Tuning</title>
<para>Examine your <command>/etc/syslog.conf</command> 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.
For example, this will log anything with a priority of <emphasis>info</emphasis> or higher, but lower than
<emphasis>warning</emphasis>, to <command>/var/adm/messages</command> or <command>/var/adm/mail</command>
without needing to sync to disk after each write. Since we want to keep all messages with a priority of
<emphasis>warning</emphasis>, this will be logged to a different file without disabling
disk syncing (to prevent data loss in the event of a system crash).
<screen>
*.info;mail.none -/var/log/messages
mail.err -/var/log/messages
*.warning /var/adm/syslog
*.info;*.!warning;mail.none -/var/log/messages
mail.info;mail.!warning -/var/log/mail
</screen>
</para>
<para>The hyphen before the logfile tells the system not to sync the log file each time after logging a system message. While you could loose logfile data in the event of a system crash, buffering your data to minimize writes to your hard drive will grant multiple blessings upon your battery life!</para>
<para>If you want your screen to actually turn off rather than use the fake blanking effect, you'll have to edit your XF86Config file. In the ServerLayout section, you can add four options:
<screen>
Option "BlankTime" "time" # Blank the screen
Option "StandbyTime" "time" # Turn off screen
Option "SuspendTime" "time" # Full hibernation
Option "OffTime" "time" # Turn off DPMS monitor
</screen>
</para>
<para>If you have a Dell Inspiron or Latitude, try enabling CONFIG_I8K when
recompiling the kernel and you'll be able to access information about your
laptop's performance from /proc/i8k. For example, running `cat /proc/i8k` on
my Dell Latitude C400 reveals:
<screen>
1.0 A06 5X1F21 63 -22 0 1 3540 -1 0
</screen>
Which can roughly be translated to [i8k ver] [BIOS] [serial #] [CPU temp]
[Lfan status] [Rfan status] [Lfan rpm] [Rfan rpm] [ac status] [buttons
status]. Significant information from this example would indicate that my CPU
is currently running at 63 degrees and that my right fan is on and running at 3,540 rpm.</para>
<para>After recompiling the kernel to support either APM or ACPI, you can gain
added power-savings benefits by recompiling the Linux PCMCIA drivers as well.
The package will detect that you have APM enabled (even if you are using ACPI,
go figure) and will automatically add power management support within the
PCMCIA system itself. This should be evidenced during the PCMCIA `make
config` step with an output similar to, "Power management (APM) support is
enabled". The PCMCIA source files are available from
<ulink url="http://sourceforge.net/projects/pcmcia-cs/">http://sourceforge.net/projects/pcmcia-cs/</ulink>
</para>
<para>Whether or not power management support is configured in your PCMCIA
package, you should use `cardctl suspend` before suspending your laptop, and
`cardctl resume` after resuming to cleanly shut down and restart your PCMCIA cards.
This will not work with a modem that is in use, because the serial driver isn't able
to save and restore the modem operating parameters. Some drivers, notably the PCMCIA
SCSI drivers, cannot recover from a suspend/resume cycle. When using a PCMCIA SCSI
card, always use `cardctl eject` prior to suspending the system. Many people
refer to this as "apmcontinue" and you can use this as a key word search with your
favorite search engine to find custom-made scripts for this.</para>
<para>Suspend-to-Disk is a tricky subject. The chief problem with it is
twofold: First, it doesn't work properly under Linux ACPI (yet). Second,
every laptop vendor seems to vary the methods used to create a
"suspend-to-disk" or "hibernate" file, so there is no uniformity. For
example, the Dell Inspiron 8000 uses Dell's phdisk utility, while the
Latitude C400 requires Dell's mks2d utility. If you're really interested
in getting suspend-to-disk working under Linux, find out if your vendor provides
a suspend-to-disk (s2d) utility. Determine if it requires it's own
partition, if that partition must be primary (not extended), etc. Most
reports of successful s2d instances involve using a s2d partition on the first cylinder
of the primary hard drive (e.g., /dev/hda1). If you use a boot manager that writes to
the Master Boot Record (MBR), you'll probably need to modify it to write to
the boot partition instead as some s2d utilities mark the s2d partition as active
when suspending, which will confuse both you and your boot manager. If
you already have installed Linux and have never made a suspend partition, there
is still hope. Using fips, parted, Partition Magic, or other similar utility
to move your partition ahead leaving free space at the first cylinder of your
hard drive. Then use your vendor supplied utility to format the partition.</para>
</sect2>
<sect2 id="nonobvious">
<title>Power saving - The not-so-obvious stuff</title>
<para>Disable 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 (or just run `top` if this is unsettling to you) to determine how much free memory you've got on average, and whether or not your swap file is even being utilized. For example, my laptop has a ridiculous 512 MB RAM, and on any given day still has an average of 150 MB RAM unused with no swap file whatsoever.</para>
<sect2 id="xf86">
<title>XF86Config Tuning</title>
<para>Screen blanking under X-Windows is primarily controlled five configuration options in
<command>/etc/X11/XF86Config</command>. The most basic, and useless setting, is <command>BlankTime</command>, which creates a fake blanking effect on the screen.</para>
<para>If you have a DPMS-compliant monitor, you might want to try enabling support for it under the
<emphasis>Monitor</emphasis> section of your <command>XF86Config</command> file:
<para>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. An example /etc/fstab with 100MB temporary ram file mounted on /tmp would look like:
<screen>
tmpfs /tmp tmpfs size=100m 0 0
Section "Monitor"
[... other values here ...]
Option "DPMS"
EndSection
</screen>
However this might create problems if you're downloading a large program and
your download manager uses the /tmp directory to hold files prior to full
download.</para>
</para>
<para>To manipulate the DPMS functions, you can create/modify the following items in the <emphasis>ServerLayout</emphasis> section:
<screen>
Section "ServerLayout"
Option "BlankTime" "10" # Blank the screen
Option "StandbyTime" "15" # Turn off screen
Option "SuspendTime" "30" # Full hibernation
Option "OffTime" "60" # Turn off DPMS monitor
EndSection
</screen>
</para>
<para>It's worth noting that the driver for your video card might not fully support these options.</para>
</sect2>
<sect2 id="swap">
<title>Swapfile Tuning</title>
<para>Consider disabling your swap file in <command>/etc/fstab</command> 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 <command>/proc/meminfo</command> and <command>/proc/swaps</command>
to determine how much free memory you've got on average, and whether or not your swap file is even being utilized.</para>
<para>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:
<screen>
bravo:~$ cat /proc/swaps
Filename Type Size Used Priority
/dev/hda3 partition 136544 0 -1
bravo:~$ 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
</screen>
Given this, I'd opt to disable my swapfile if this is any indicator of my future usage.</para>
</sect2>
<sect2 id="tmpfs">
<title>/tmp Tuning</title>
<para>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:
<screen>
tmpfs /tmp tmpfs size=100m,mode-1777 0 0
</screen>
</para>
</sect2>
<sect2 id="misc">
<title>Miscellaneous Tuning</title>
<para>Boot your system and list the currently loaded modules with lsmod.
Anything listed here most likely needs to be loaded on a regular basis;
@ -332,10 +447,38 @@ 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.</para>
<para>One popular practice in the past involved modifying the update/bdflush
<para>Additionally, it's worth considering anything in the following areas:</para>
<para><itemizedlist>
<listitem><para>Adjust your system's BIOS settings to decrease or turn off your display's backlight.</para></listitem>
<listitem><para>Adjust your system's BIOS settings to reduce the CPU clock speed while on battery.</para></listitem>
<listitem><para>Avoid using PCMCIA devices while on battery. Better yet, eject your PCMCIA cards when not in use.</para></listitem>
<listitem><para>Avoid using external devices with your computer while on battery.
This includes printers, external monitors, zip drives, and portable cameras.</para></listitem>
<listitem><para>Avoid using built-in devices while on battery. This includes cdroms and floppy drives.</para></listitem>
<listitem><para>Use simple software. A full blown multimedia application will create a lot more system load and disk activity than a small simple word processor</para></listitem>
<listitem><para>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 <command>xinitrc</command> script to launch a different, more simple window manager based on
whether or not your system is on battery power.</para></listitem>
</itemizedlist></para>
</sect2>
<sect2 id="myth">
<title>Power Saving Myths</title>
<para>One popular pastime involved modifying the update/bdflush
daemon to change the frequency of flushing the filesystem buffers (sync).
However, newer kernels do not use a user space update daemon, so any
However, the current Linux kernels do not use a user space update daemon any more,so any
modifications you make here will simply never take effect.</para>
<para>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
<ulink url="http://sourceforge.net/projects/pcmcia-cs/">http://sourceforge.net/projects/pcmcia-cs/</ulink>.
</para>
<para>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.</para>
</sect2>
</sect1>