PowerPolicyManagement

Differences between revisions 2 and 3
Revision 2 as of 2007-06-26 01:45:53
Size: 16007
Editor: ip68-226-98-152
Comment:
Revision 3 as of 2007-06-26 02:29:54
Size: 16429
Editor: ip68-226-98-152
Comment:
Deletions are marked like this. Additions are marked like this.
Line 24: Line 24:
== Goals ==

The power policy manager for linux is meant to be a universal, cross-platform framework for reducing power consumption in linux based devices; with particular focus on handhelds. We have three primary design goals. The first is to establish an interface, based on Dbus, that can be used by applications or a GUI to provide usage model information to a power manager daemon. Usage model info is intended to help us understand where, when, how, and for what purpose the device is being used. These attributes can help us intelligently regulate power and performance to match the users neds and expectations.


The second goal is to identify what subsystem micro-policy managers are already available for us to manipulate in the PPM daemon; and what, if any, control improvements we can add which will allow the macro-policy to further optimize the micro-policies. The third goal is to identify subsystems which can be optimized for power, but that which have no existing micro-policy scheme. We will work with the linux communitys subsystem maintainers to design and implement a micro-policy scheme that can be intergrated into PPM as a whole.
== Architecture ==

The power policy manager for linux is meant to be a universal, cross-platform framework for reducing power consumption in linux based devices; with particular focus on handhelds. It is implemented in three parts: a configuration data layer, a micro policy engine control layer, and a daemon that ties the two together.

 * '''Configuration Layer''': Provides “configuration element” messages from a GUI, applications, and system agents which describe the optimization potential in the system. e.g. user focus, device position, handling, and movement, and application needs. The Configuration Element Interface (CEI), will be based on Dbus and can be used by applications or a GUI to provide usage model information to our power manager daemon. Usage model info is intended to help us understand where, when, how, and for what purpose the device is being used. These attributes can help us intelligently regulate power and performance to match the users neds and expectations.
 * '''MPE Layer''': Provides “tunable element” control access to all the subsysems on the platform. e.g. LCD brightness, Audio codec, etc. The MPE Interface (MPI), will be used to control any subsystem micro-policy managers which are already available to us. Subsystems are determined as a collection of devices which serve some common purpose that can be optimized for power cleanly. Micro-policy engines will exist for each subsystem we intend to control.
 * '''PPM Daemon''': Defines what groupings of configuration elements are configuratble from the GUI, and the mappings between configuration and tunable elements.

attachment:C__fromlaptop_ppm_small.jpg
Line 41: Line 44:
https://umd.jf.intel.com/projects/umd/attachment/wiki/PowerPolicyManagement/ppm_small.jpg

Overview

Introduction

Power optimization for PC Architecture is vastly different from that for embedded systems such as ARM based PDAs or Cell phones. This is because each embedded chipset has its own unique set of power management features that require a custom flavor of linux built from the ground up. PC based chipsets already have a well established code base in linux, with existing hardware interfaces such as ACPI and HAL; and as they have evolved from desktops into smaller, more portable systems, a wealth of software packages have been created to optimize power.

Each of these packages can be thought of as a power micro-policy controller for a specific subsystem on a linux based platform. For instance cpufreq manages power for the CPU supsystem, or the iwconfig interface manages device specific power for the Network (WLAN) subsystem. Currently all these micro-policy managers function independantly of one another and with little or no information from the user domain. Thus there are two things lacking in linux with regard to power. The first is a centralized policy manager which can gather input from ACPI, the user, and running applications to generate a complete picture of how the device is being used. This information can be used to create macro-policies which can selectively tune or override the systems micro-policy managers to achieve far greater power optimization. The second piece missing is a scheme to create micro-policy managers for all power-hungry subsystems that dont currently support any form of control.BR

  • Macro-policy focus is on the usage model
    • Where is the user and device (e.g. stationary vs moving, near to vs from from a power source, inside or outside)
    • When is the device being used (e.g. night vs day)
    • How is the device being used (e.g. is the user listening to it, looking at it, controlling it)
    • What is the device being used for (e.g. using network, playing audio, displaying video, high vs low performance)
  • Micro-policy focus is on the subsystem and driver level
    • Groupings by power optimization capability
    • CPU (single or multi-core)
    • Network (LAN, WLAN, WWAN)
    • Storage (Harddisk, Flashdisk, DVDROM)
    • Human Interface Devices (Mouse, Keyboard, Touchscreen)
    • Video (LCD, Graphics card)
    • Audio (Speakers, Headphones, AC97, HD Audio)
    • Wireless Connections (Bluetooth, GPS)

Architecture

The power policy manager for linux is meant to be a universal, cross-platform framework for reducing power consumption in linux based devices; with particular focus on handhelds. It is implemented in three parts: a configuration data layer, a micro policy engine control layer, and a daemon that ties the two together.

  • Configuration Layer: Provides “configuration element” messages from a GUI, applications, and system agents which describe the optimization potential in the system. e.g. user focus, device position, handling, and movement, and application needs. The Configuration Element Interface (CEI), will be based on Dbus and can be used by applications or a GUI to provide usage model information to our power manager daemon. Usage model info is intended to help us understand where, when, how, and for what purpose the device is being used. These attributes can help us intelligently regulate power and performance to match the users neds and expectations.

  • MPE Layer: Provides “tunable element” control access to all the subsysems on the platform. e.g. LCD brightness, Audio codec, etc. The MPE Interface (MPI), will be used to control any subsystem micro-policy managers which are already available to us. Subsystems are determined as a collection of devices which serve some common purpose that can be optimized for power cleanly. Micro-policy engines will exist for each subsystem we intend to control.

  • PPM Daemon: Defines what groupings of configuration elements are configuratble from the GUI, and the mappings between configuration and tunable elements.

attachment:Cfromlaptop_ppm_small.jpg

Constraints

  • Must be as generic as possible for use across multiple linux based platforms
    • No dependence on knowledge of specific applications or drivers
    • Should exist entirely in user space so there's no kernel dependency
    • Use C as the default programming language
  • Leverage established linux protocols and interfaces wherever possible
    • Should communicate with applications and GUI through a Dbus interface.
    • Should use ACPI for system event notification

Configuration Input Layer

List of Configuration Elements

These data points represent very specific conditions which may affect power or performance. Some can be used immediately for obvious purposes, but some are just there as placeholders for some future benefit. The user will likely never provide this information manually at this level. Usage model data at this granularity will be provided by the system (ACPI, HAL, Applications, or the GUI in the form of a macro). Each type of input can be broken down into a set of specific "configuration elements" which are what is actually sent across DBUS.

User Focus

These refer to how the user will interact with the MID. These represent the only things that the user MUST tell us.

  • Visual Attention
    • no visual (e.g. listening to a playlist of music)
    • intermittent visual (listening to music and picking songs)
    • constant visual (e.g. watching a video, playing a game)
  • Aural Attention
    • no audio (e.g. without headphones in a public place)
    • intermittent audio (e.g. waiting for IM alert)
    • constant audio (e.g. listening to music or watching a video)
  • Device control
    • no interaction (e.g. watching a movie, or listening to a playlist of music)
    • intermitent interaction (e.g. browsing the web, pausing to read)
    • constant interaction (e.g. playing a game)
  • Target Battery Life
    • 1 hour (e.g. just enough for a meeting or class)
    • 2 hours (e.g. just enough to watch a movie)
    • 4 hours (e.g. just enough for a plane ride)
    • 8 hours (e.g. enough for a work day)
    • maximum (as much as possible)

Config Element(string)

Target(string)

Value(string)

Value(int)

videofocus

lcdmon,extmon,exttv

none,rare,intermittent,often,constant

X ms (reaction time needed)

audiofocus

speakers,headphones,ext

none,rare,intermittent,often,constant

X ms (reaction time needed)

userinput

keypad,mouse,touchscr,camera

none,rare,intermittent,often,constant

X ms (reaction time needed)

tgtbattlife

all

1hour,2hour,4hour,8hour,max

X minutes til off

Device Position

These refer to the physical position and state of the MID. They are things that for the most part the user will have to enter, but we can work to make most of these automatically detected.

  • Device movement
    • stationary
    • moving
      • slowly (e.g. walking, jogging)
      • intermittent high speed (e.g. in a car driving and stopping)
      • constant high speed (e.g. in a plane or train)
  • Proximity/Accesstime to power source or wifi connection
    • Plugged in (ACPI event)
      • AC wall socket
      • DC Car jack
      • DC Airplaine jack
      • DC Solar Charger
      • External Battery
    • X minutes until power source/wifi available (ETA)
      • immediately (e.g. in a car, at home, airport terminal)
      • < 20 (e.g. in transit between home and work)

      • < 120 (e.g. general mobile usage)

      • < 240 (e.g. a standard plane ride in coach)

      • < 480 (e.g. a standard college school day)

      • very large (e.g. on a camping trip)
    • X minutes until power source/wifi no longer available (ETD)
      • < 30 (e.g. charging at airport lounge, plane leaves soon)

      • < 120 (e.g. charging while at a restaurant)

      • < 480 (e.g. charging the night before)

      • very large (long period of outlet usage)
  • Device handling
    • is in a stable position (e.g. on a desk or on someones lap)
    • is being jostled (e.g. held while walking, or in a backpack)
  • Geographic Location (user input or GPS detection)
    • Country (e.g. for cellular standards, radio freq ranges)
    • Rural vs Urban (e.g. likelihood of cell tower or recharge)
    • Proximity to cell towers (e.g. if one had a tower map)
    • On Land vs Water (e.g. likelihood of cell tower or recharge)
    • Elevation (e.g. too high for cellular)
  • Radio Signal restrictions
    • outside
      • with full sky view (e.g. in a rural area, or on the ocean)
      • with partial sky view (e.g. amongst trees, or in the city)
    • inside
      • small structure (e.g. house, car, plane)
      • large structure (e.g. an office building, or a mall)
    • underground (e.g. a long tunnel, or subway)
    • forbidden (e.g. on a plane)
  • Ambient light
    • Midnight (e.g. total darkness, LCD backlight on very low)
    • candlelight (e.g. dim lighting, LCD backlight on low)
    • officelight (e.g. standard lighting, LCD backlight off)
    • daylight (e.g. high lighting with glare, LCD backlight on medium)
    • sunlight (e.g. highest lighting and glare, LCD backlight on full)

Config Element(string)

Target(string)

Value(string)

Value(int)

radios

BT,Wifi,Wimax,GPS

forceoff,allowon

0, 1

extpower

outlet,battery

ac,car,plane,solar,extbatt

X mw (total charge capacity)

ETA (Estimated Time of Arrival)

outlet,celltower,wifihotspot

1hour,2hour,4hour,8hour,max

X minutes to target

ETD (Estimated Time of Departure)

outlet,celltower,wifihotspot

1hour,2hour,4hour,8hour,max

X minutes at target

ambientlight

all

midnight,candlelight,officelight,daylight,sunlight

X % of direct sunlight

movement

all

still,walk,jog,bike,car,train,plane

X meters per minute

Time of Use (System Clock)

These are just examples of what the PPM can do if it knows the date and time. The input here is just the system clock.

  • Time of Day
    • User specified (e.g. meeting times for audio shuttoff)
    • Night vs Day (e.g. for lighted panels or backlight)
    • Sleeping vs Awake (e.g. alarm volume or do not disturb)
  • Day of Week or Month
    • User specified (e.g. for TV recordings, or quicken updates)
    • Workday vs Weekend (e.g. unused during the weekends)
  • Time of Year
    • User specified (e.g. holidays where the device can be offline)
    • Season (e.g. could be used to determine temperature)

Config Element(string)

Target(string)

Value(string)

Value(int)

DATE

all

local date

-

TIME

all

local time

-

Application

These refer to what the MID and its devices are being used for. All of this should come from device input rather than from the user (i.e. from the application itself).

  • Application
    • Process IDs (e.g. focus all performance on a few select apps)
  • Network
    • On vs Off (e.g. at the office vs on a plane)
    • intermittent vs constant (e.g. email vs streaming audio)
    • transmition speed needed (e.g. align with audio stream)
  • CPU
    • Percentage Performance Needed (e.g. a game could monitor FPS and gradually increase or decrease CPU performance as needed to reach a target FPS)
    • Performance Heuristic
      • Constant (e.g. for a game)
      • Intermittent (e.g. for internet browsing)
      • Rare (e.g. for audio decode/playback)
  • ACPI
    • Is the AC adapapter connected
    • if the battery inserted
    • Is there a "lock" switch for keypad or mouse input

Config Element(string)

Target(string)

Value(string)

Value(int)

cpu

CPU0,CPU1,...

off,low,med,hi,max

X % of max perf needed

appfocus

pid (process id)

none,rare,intermittent,often,constant

X % of full user attention

network

LAN,WLAN,WWAN

none,rare,intermittent,often,constant

X kbps of bandwidth

acpi

outlet,battery,keypad,mouse,touchscreen,radios

enabled,disabled

1,0

High Level Usage Models

These are high level usage models that the user can actually provide. They are just combinations of usage model data points that can be deduced from the high level picture. These could be input from the GUI.

Input from GUI

These are examples of what the GUI could allow the user to choose so that the PPM can determine the User's Focus and (at least until we get this from the device) the Device position.

  • Home
    • Device Position
      • Device movement = stationary
      • Proximity to power source = Plugged in or within immediate range
      • Device handling = stable
      • Geographic Location = unused
      • Radio restriction = inside small structure
    • User Focus
      • Visual attention = constant
      • Aural attention = constant
      • Device control = constant
  • Office
    • Device Position
      • Device movement = stationary
      • Proximity to power source = Plugged in or within immediate range
      • Device handling = stable
      • Geographic Location = unused
      • Radio restriction = inside large structure
    • User Focus
      • Visual attention = constant
      • Aural attention = constant
      • Device control = constant
  • Cafe
    • Device Position
      • Device movement = stationary
      • Proximity to power source = < 120 minutes to power

      • Device handling = stable
      • Geographic Location = unused
      • Radio restriction = inside small structure
    • User Focus
      • Visual attention = intermittent
      • Aural attention = none
      • Device control = intermittent
  • Walking/Jogging
    • Device Position
      • Device movement = moving slowly
      • Proximity to power source = < 120 minutes to power

      • Device handling = jostled
      • Geographic Location = unused
      • Radio restriction = outside
    • User Focus
      • Visual attention = none
      • Aural attention = constant
      • Device control = none
  • Car
    • Device Position
      • Device movement = moving intermittent high speed
      • Proximity to power source = Plugged in or < 20 minutes to power

      • Device handling = jostled
      • Geographic Location = unused
      • Radio restriction = inside small structure
    • User Focus
      • Visual attention = intermittent
      • Aural attention = constant
      • Device control = none
  • Airplane
    • Device Position
      • Device movement = moving constant high speed
      • Proximity to power source = Plugged in or < 480 minutes to power

      • Device handling = stable
      • Geographic Location = unused
      • Radio restriction = forbidden
    • User Focus
      • Visual attention = constant
      • Aural attention = constant
      • Device control = constant

Input from Device

These are just examples of certain application workloads that could be running on the system which can tell the PPM what the device is being used for. We could actually provide these groupings as inputs in their own right or force apps to just provide low level data points.

  • Internet Browsing
    • Network = intermittent
    • Audio = off
    • Video = constant
    • CPU = intermittent, low
  • Video Playback (harddisk)
    • Network = off
    • Audio = constant
    • Video = constant
    • CPU = intermittent, high
  • Audio Playback (harddisk)
    • Network = off
    • Audio = constant
    • Video = off
    • CPU = intermittent, high
  • Video Playback (streaming)
    • Network = constant
    • Audio = constant
    • Video = constant
    • CPU = intermittent, high
  • Audio Playback (streaming)
    • Network = constant
    • Audio = constant
    • Video = off
    • CPU = intermittent, high
  • eBook Reading
    • Network = off
    • Audio = off
    • Video = constant
    • CPU = rare, low
  • Picture Viewing
    • Network = off
    • Audio = off
    • Video = constant
    • CPU = intermittent, low
  • Email
    • Network = intermittent
    • Audio = off
    • Video = constant
    • CPU = intermittent, low
  • Gaming (single player)
    • Network = off
    • Audio = constant
    • Video = constant
    • CPU = constant, high
  • Gaming (multiplayer)
    • Network = constant
    • Audio = constant
    • Video = constant
    • CPU = constant, high
  • Shedule/Calendar Update
    • Network = off
    • Audio = off
    • Video = constant
    • CPU = intermittent, low

Subsystems We Can Optimize For Power

CPU

Audio

Video

Network

Human Interface Devices

Storage

Examples of how PPM can help save power

Design

Overview

Interfaces

MobileAndEmbedded/PowerPolicyManagement (last edited 2008-08-06 16:26:39 by localhost)