17
Matthew Locke November 2007 A Linux Power Management Architecture

A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

Matthew Locke

November 2007

A Linux Power ManagementArchitecture

Page 2: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

Agenda

Introduction

Features in Kernel and User space

Pulling it together

Future work

Page 3: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

Introduction

Typical mainline Linux power management features:

Per platform idle loop allows platforms to place processorin a low power state

Suspend-to-RAM - memory in auto refresh, CPU in a lowpower state, drivers in a low power state

Cpu frequency scaling

Of course, main target of these features is the x86 laptop

Power management for embedded mobile devices has beencustom development per device and different for every SoC

Over the last year, the mailing list and development activityhas increased dramatically

2nd Linux PM Summit was held this year

Page 4: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

System Suspend/Resume

Recently the system suspend/resume code wasredesigned

Better support for platform specific behavior

Better support for hibernation (suspend-to-disk)

Pm_ops were reworked to ensure system follows correctsteps to prepare for a suspend.

Suspend-to-disk code is renamed to hibernation with aclear distinction from suspend. Also, being reworked toensure memory snapshot, userspace and drivers are allhandled correctly for stable behavior.

Expect longer life and more stable behavior onyour laptop in the next couple releases!

Page 5: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

Cpufreq

The cpufreq stack managesthe runtime powermanagement for the CPU.

Some ACPI platforms triggervoltage changes based onCPU frequency changes.

The embedded platforms donot have a mechanism tochange voltage

The “on-demand” governorchanges cpu frequency basedon load.

Cpufreq is connected to theclock framework only onOMAP1 and OMAP2

Page 6: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

Dynamic Tick / clockevent

The whole time subsystem was redesigned to eliminatethe periodic timer which is very good for powermanagement.

Clockevent is the bottom layer with High ResolutionTimers and time subsystem on top.

Now there is an optimized platform independent way tofind the next event

Platform idle loop uses this standard API to find the nextevent and decide the course of action

Page 7: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

Latency Framework

Tracks minimal latency the system (including all drivers)can tolerate in order not to break.

API includes Register driver/subsystem with framework

Set a latency constraint

Subscribe to notification for latency changes

Get system wide latency constraint

Only a few drivers use the latency framework. It will takea while for driver maintainers to update.

An example is an audio driver that knows it will get aninterrupt when the hardware has 200 usec of samples leftin the DMA buffer; in that case the driver can set alatency constraint of, say, 150 usec.

Reworked into pm_qos patches

Page 8: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

CPUidle Framework

Framework for selecting optimal CPU power state inthe idle loop.

CPU power states are defined by descriptors

Builds on dynamic tick and latency framework

Page 9: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

CPUidle Framework

Two different governors are provided: Menu - analyzes the latency from the latencyframework, latency from the descriptor and the nextclockevent from dynamic tick to determine thelowest cpu state possible

Ladder - uses activity metrics to step the CPUpower state into the right mode. Mostly applicableto ACPI platform

Page 10: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

Operating Points

Operating Point is a group ofpower parameters set to specificvalues.

Parameters are CPU clock andvoltage but may include otherparameters such as bus clocks.

Run time power consumption canbe reduced by lowering voltageand frequency

Several attempts were made overthe last year to mainline aoperating point implementationbut were rejected

On x86 operating points arehidden in ACPI so the challenge isto get a solution that works forother platforms without affectingx86.

Current thinking is to incorporatevoltage scaling into the lower layer ofcpufreq

Page 11: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

Device runtime power management

Userspace control over driver power management isbeing deprecated

/sys/…/power/state file is removed

Drivers are expected to manage their device powermanagement state during runtime to minimize powerconsumption.

Philosophy is that drivers know best when and how to puta device into a low power state during runtime

USB stack is leading this effort. USB stack has aautosuspend/resume feature for the host and devices. Itwatches for inactivity and turns stuff off.

Page 12: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

OHM - Open Hardware Manager

OHM is a small open source systemsdaemon which sits above HAL andabstracts out common hardwaremanagement tasks such as system wideinhibit action control

The main use cases described aretaking action based on subsysteminactivity

Used by OLPC

From OHM website

Page 13: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

OLPC, maemo, and Moblin

According to material presented at the PMsummit ‘07, Nokia’s stack looks similar to pictureon previous slide

Moblin is a Intel sponsored/funded project for ainternet tablet application stack. A Policymanager is a part of the stack and is currentlybeing designed.

OLPC is working a policy manager based onOHM

Page 14: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

Pulling it all together…

A pm architecture using the latest components enablessome very aggressive policies to reduce powerconsumption.

Page 15: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

Pulling it all together…

Automatically setting cpu into lowest powerstate possible when system is idle.

Enabling drivers to drop into low power stateswhen inactive.

Frequency and voltage scaling to reduce powerconsumption at runtime.

Page 16: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

What’s next

Migrate more drivers to manage their own power statesfollowing USB as the example

Integrate voltage scaling for embedded platforms intocpufreq somewhere

More userspace development: OHM, policy managers,HAL.

Linux powered devices have the longest batterylife!

Page 17: A Linux Power Management ArchitectureIntroduction Typical mainline Linux power management features: Per platform idle loop allows platforms to place processor in a low power state

Matthew Locke

[email protected]

408-386-1482