"Green" Software – conversation with Bob Steigerwald on how to make software energy efficient

By Jason Zhu (Intel) (9 posts) on October 26, 2007 at 2:49 pm

Intel engineers have been working on energy efficient solutions on all Intel platforms for a long while to better utilize the POWER features. Bob Steigerwald, our engineering manager in the Client Enabling Team, shared with me his views on “Green” software. 

--------

Thinking "green" is all the rage. Whether the motive is to reduce carbon dioxide emissions, dependence on foreign oil, or just save money on the electricity bill, the amount of electricity used by computers is getting more and more attention. There is an increasing demand from Enterprise IT departments to reduce the power demands and thermal side effects for servers. They definitely want to reduce the electricity bill for computing and cooling. Desktops computers are getting in on the act too. Soon there will be US Energy-Star ratings for consumer and enterprise desktops and that's going to be a differentiator in the market place. Mobile PC users are also seeking (but not yet finding) the system with an all-day battery.  

So why don't the battery manufacturers simply make better, longer-lasting batteries?  They're certainly trying to get more out of Li-Ion - they get a little more each year. Someday there will be fuel cell batteries but they have been promised for a while. One of the hurdles they have there is that they will be forbidden on aircraft. Ironic because that's when we really notice our limited battery life.  

A lot of the work also goes into CPU and component design too - the hardware. Getting all of the components to speak the same power language (ACPI) was a big step forward.

So what else can we do? Software actually plays a big role too, from the drivers to the OS, and yes - even application software. Often treated as yet another non-functional requirement (or not even considered), energy efficiency really should be a component of the software design strategy. Here's a real world example - if I am playing a DVD movie on my notebook, is it better for the playback application to set up a large buffer and do less frequent optical drive reads as opposed to keeping the drive spinning? It's not much extra work for the software developer, but the buffering strategy can add up to 20 minutes to the battery life. I would hope that the developer of the playback application is thinking about this during design. By the way, high definition (BlueRay or HD-DVD) playback is even more computationally intensive. Good luck getting through anything more than a one-hour documentary on a standard battery. These app developers need to do everything they can to extend the battery life. 

The DVD playback application and buffering is just one example. There are actually many techniques that can be applied to conserve energy. I like to classify them into 3 areas - Computational Efficiency, Data Efficiency, and Context Awareness. Computational Efficiency says get the job done quickly and let the CPU go to idle to save energy - use fast algorithms, multi-threading, and advanced instruction sets like SSE4. Data Efficiency requires thinking about how an application reads and writes data (particularly from/to a drive) and how it moves data around during execution. The DVD playback buffering scenario is an example of data efficiency. Context Awareness means that the application knows the power state of the computer and the currently set power policy, behaves appropriately, and responds to changes dynamically.  

Will software sell better if it's "green"? We think so. Teams at Intel are studying these methodologies and continue to make recommendations to the development community. See the article on Creating Energy Efficient Apps for more information.

------

So what do you think of Bob's view? Are you aware of the importance of power-saving in your apps? Do you use the tools and resources to build power-aware apps? Please join us for the tech talk of "Introduction to Energy-Efficient Software" on 2nd life on Nov 8. We are looking forward to hearing more ideas from you.

Categories: Mobility

Comments (5)

October 27, 2007 5:27 PM PDT

David Stewart (Intel)
Total Points:
9,435
Status Points:
9,435
Black Belt
I understand that another category of focus for developers are apps / frameworks that using polling, say on a socket. The result of this behavior is that "idle" processors never get to true idle, and thus don't save as much power as they could.
November 1, 2007 9:42 AM PDT

Du Wei 杜伟 (Intel)
Total Points:
9,105
Status Points:
9,105
Community Manager
jason, good topic on going Green. However, there is a very long way to go before developers start to use coding techniques to go Green.
November 1, 2007 1:21 PM PDT

Jason Zhu (Intel)
agree, it will be a long way to turn to direction of green software.
Energy-efficient becomes more and more important for computer products, it started and still mainly focuses on hardware system, to save power on cpu, memory, disk, LCD and the whole system. in return, it will save the money or enhance usability (eg. longer work time) to end customers.
by learning the importancy, our engineers have been spending lots of efforts in creating new tools, collateral to educate how to create energy-efficient software.
we hope it to be a good start, and more software developers will participate and contribute.
November 1, 2007 9:20 PM PDT


Bob Steigerwald
Responding to David Stewart - I agree, it's important to avoid polling loops that keep the processor unecessarily busy. Better to use an even mechanism or at least reduce the frequency that polling occurs.

Regarding Developer acceptance, it's clear that there is not widespread awareness and adoption. It will take time. We have seen some good response from Linux developers at http://linuxpowertop.org and at http://lesswatts.org - check them out for some great tools and methods.
April 3, 2008 5:43 PM PDT


EdinIT
Is there a minimum requirement for a software application to be classified as "green software"? It seems this is left to the individual company.

Trackbacks (0)


Leave a comment  

To obtain technical support, please go to Software Support.
Name (required)*

Email (required; will not be displayed on this page)*

Your URL (optional)


Comment*