Power Efficiency: Developing Power Aware Apps

Developing Power Aware Apps

For some time, the industry has been aware of the need for software to be able to be aware of and to tune its usage of power. This has resulted in the development of various standards that provide the hooks that allow an application to be aware of the power context of the platform it is running within. This context includes items such as whether the platform is plugged into an AC line, or if not, the remaining battery life. With this information, an application can potentially modify its behavior by using algorithms and techniques that minimize power usage at the cost of a reduction in performance.

  • Energy Efficient Guidelines: These guidelines focus on how to optimize applications for energy efficiency. It is beneficial to the application developer to look at the system wide power efficiency as running background applications might affect or interact with the target application. For instance a background virus checker might slow down file access or impact generic performance when active. To eliminate or reduce background impact, try to disable or minimize potential system culprits when measuring application energy efficiency.
  • Energy Efficient Criteria Checklist: This checklist can aid you in creating energy-efficient software applications, with an easy to review list of ideas and tips. The checklist is OS agnostic except where otherwise noted.
  • Fine-Grained Application Analysis For Energy Aware Computing: This white paper describes how software “idle” behavior can have a negative impact on battery life. It also explains how to find the root cause of an application behavior that impacts battery life and the steps necessary to mitigate it.
  • Creating Power Aware Applications on Linux using Qt4: The purpose of this paper is to describe methods to create applications that can react to power events and adjust their execution appropriately. With the explosive popularity of mobile devices, including the emerging market for Mobile Internet Devices (MIDs), it is important for applications not only to be efficient, but to be aware of the platform context.
  • HD Video Playback Power Consumption Analysis: Significant growth in the adoption of HD content, such as HD-DVD and Blu-ray* has led to increased viewing of HD content on mobile computers and a corresponding interest in extending mobile platform battery life by reducing power consumption. This paper describes the results of our analysis of three different HD Video playback applications on a mobile computer while running various HD codecs with a primary focus on the value of hardware acceleration. We then provide recommendations to reduce the power consumption during playback to help achieve the goal of two hours or more of full HD video playback.
  • Assault on Batteries with the Intent to Perform: This paper presents data obtained from the Google Desktop Search “Performance-Power Plug-in*” and sample code available at the Intel Content Management Commun ity Forum to show how a platform approach may be taken to find ways to improve the performance per watt ratio of some applications.
  • How to Extend Battery Life in Mobilized Applications: Implement the principles of Application Power Management for Mobility to extend battery life in mobilized applications. A good user experience and longer battery life are critical factors for mobile systems. Application software has a key role to play in improving user experience as well as in extending battery life.
  • How to Handle System Sleep/Wake Power Transitions: Implement the principles of Application Power Management for Mobility to handle system sleep/wake power transitions. A good user experience and longer battery life are critical factors for mobile systems. Application software has a key role to play in improving user experience as well as in extending battery life.
  • Power Event Interception and Control under Microsoft Windows* XP: This document describes a technique for getting Power Event notification from the operating system. This method is primarily aimed at controlling power on Intel® x86-based systems actively running Intel® SpeedStep® Technology. And where the use of the Read Time Stamp Counter (RDTSC) instruction varies based on the changing frequencies imposed by Intel SpeedStep Technology. You should understand the basics of Power Management under the Microsoft Windows XP* Operating System and have a basic understanding of Intel® SpeedStep®1, as well as an understanding of Microsoft Windows XP device drivers and Win32* threading APIs.
  • Windows* WM_POWERBROADCAST Messages in a Mobilized Environment: In an ideal world, mobile systems would run all day without requiring the support of AC power – and with the launch of Intel® Centrino® Mobile Technology this is becoming closer to reality. However, in addition to the advances in hardware, software developers can now make applications power-aware by handling the WM_POWERBROADCAST message provided by the Windows* Operating System and scaling features accordingly. This whitepaper describes how to handle the WM_POWERBROADCAST message and also describes the sequence of messages for four typical cases. Additional introductory material is available from the MSDN documentation at http://msdn.microsoft.com*. MSDN, however, does not describe the expected sequence of messages in the event of AC power loss, AC power reconnect, system standby and natural battery depletion when off of AC power. These areas are explored here with a detailed analysis.
  • The Art of Graceful Application Suspension: This paper provides examples of what happens when a system prepares to suspend operations, suspends operations and resumes operations from a suspended state, within a Windows* environment. We address the purpose of the messages and events that are sent and describe their proper use and timing while offering suggestions for how to use them efficiently to avoid possible data loss. In addition, we explore what types of applications should be paying attention to these messages and events. Focusing on the messaging specific to the Windows XP* Professional operating systems, coding examples are provided to illustrate ways to prepare for and recover from the suspension and to suggest ways to either prevent suspension from occurring, or to work around the current limitations. A basic understanding of Windows messaging is assumed for this discussion.
  • Power Management:Designing Applications to Conserve Battery Life: Application developers accustomed to creating software for desktops and servers are typically not used to thinking about topics like power conservation and battery life. However, with the rise of wireless capability in the enterprise, these are topics that should be of increasing interest to application developers on all platforms. In this paper, we explain why developers should strive to create energy-efficient applications, and provide a brief overview of some of the technologies available for accomplishing this. This paper is targeted primarily at application developers working on Windows*-powered mobile devices. The technologies described here can be applied in full, or in part to laptops, Tablet PCs, and PDAs powered by Windows 98, 98se, Millennium, XP, XP Tablet Edition*, CE*, and CE.NET*.
For more complete information about compiler optimizations, see our Optimization Notice.