[linux-pm] Preparation for a talk on 2.6 power management.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>I've been asked to do a talk at the CELF conference in a few weeks

>The Brief:
>==========
>"Please present on the topic "Linux 2.6 Power Management".  I have been
>recommending to most people to use between 35 and 40 minutes for
>presentation, and leave between 10 and 15 minutes for questions and
>answers.  I think that a general overview of the current directions in
>power management infrastructure and technology for the 2.6 kernel would
>be really great.
>In the area of power management, we also have presentations on 1)
>dynamic power management (power profile changes at high 
>frequency during
>runtime) and 2) suspend/hibernate to flash.  Your presentation is
>currently scheduled for Wednesday, January 26th at 9:00 AM."

Is flash on a CE device appear as a disk so that we'd use STD, or does
it appear as RAM?

>The Outline To Date:
>====================
>
>1) The overall aims of Power Management (No source here - feel free to
>add/blow away in flames)
>* Power saving

...without noticable performance impact.

>* Quick return to usable state
>* Flexibility - cope with variety of device capabilities, user policies
>etc.
>* Reliability
>* Transparency to userspace (so far as possible)
>* Good interaction with related functionality: hotplug.
>
>2) The Challenges in Power Management
>* Documentation of device capabilities
>* Devices don't always conform properly to standards (bugs)
>* The complexity of the task - locking/ordering, minimising
>invasiveness, interaction between drivers, provision of generic
>functionality but also possibility of overriding, support of drivers
>rejecting state changes.
>- Interaction between run-time power management (driver sleeps when
>nothing to do) and system states (suspend to ram/disk etc)

At least on ACPI systems, one of the big challenges
has been the breadth of interpretations of the ACPI spec.
ie. fix one box, break another...

>3) Past Implementations (2.4 - also cover earlier?)
>* APM support
>* Event notifier chains.
>* No STR. Suspend2 works, with some help from userspace.

2.4 includes ACPI, including CPU power-state support.
It also supports various P-state capabilities,
though not as much as 2.6.
We don't even try to support S3 (STR) in 2.4 though.

>
>4) The Current State of Play (2.6 kernel)
>* Very much work in progress!
>* Focus much more ACPI than now obsolete APM. (True of 2.4 too?)

>From a Linux development point of view, this was true in 2.4 also.

But this is because APM is BIOS-based and we're talking about
OS development.  With APM, the BIOS is in charge; with ACPI,
the OS is in charge.  Thus the development burden with ACPI
is on the OS.

>ACPI concerned with much more than just PM (Resource enumeration, IRQ
>routing, Sleep state enumeration/methods...)

For configuration, ACPI is somewhat of a catch-all HAL.

Its goal is to abstract
the hardware from the OS.  Its goal is not to replace
standard methods, but to provide a generic interface
where standard methods do not exist.

eg. PCI knows how to enumerate PCI devices --
ACPI is used to enumerate legacy devices.

ACPI-based PCI-hotplug covers non-standard hot-plug controllers,
but when PCI standardized its hot-plug controller, ACPI isn't
needed for hot-plug where standard HW has shipped.

I expect the same thing to happen with CPU, memory, and IO-hotplug --
they'll start off non-standard and abstracted by ACPI; and
then later standard methods may emerge.

>* Driver model implementation. Current focus more on system 
>states (STR,
>STD). Run-time PM support not handled in driver model?

cpufreq handles run-time PM for processors.
Sometimes ACPI helps it, sometimes not -- depending
on the processor and firmware.

There is no run-time PM for devices -- and this
is a gaping hole in Linux, along with the need
for a place in the kernel where PM policy
can be communicated from the user to the devices.

>* Number of drivers still need switching to driver model or
>implementation of suspend/resume methods. Particular problem areas USB
>and DRI/DRM.
>* Actual internal interface for device states still in a state of flux.
>
>5) Current working implementations:
>* STR working on some x86, non-SMP systems
>* STD (In kernel and Suspend2) work reliably on most x86 systems, ports
>to PPC (both) and ARM (Suspend2 2.0).
>* Runtime PM support via sysfs interface?
>
>6) The Future
>* Stabilise internal API
>* Completion of driver support for suspend/resume methods
>* SMP, non-x86 support for STR.
>* Improved support for other archs.
>* Merge Suspend2? :>
>* Improved runtime pm support?

I think we're now in the "debug STR into existence" mode --
sort of like we were debugging ACPI interrupt configuration
into existence a year ago.  "existence" = something you
can actually deploy and support.

I think later this year we'll be spending significant time on what many
consider the bottom line -- measuring and improving laptop battery life.

-Len


[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux