Thursday, September 26, 2013

A “Software Energy Footprint” (SEF) standard for measuring and comparing software energy effectiveness

Hi there!
Here I will present and further elaborate on my idea for the second seminar, explaining the background and argue the feasibility of implementing a standard for measuring energy effectiveness of software. The text is made up of my initial thoughts, extended with what was discussed on the seminar and also combined with a few elaborations.

A “Software Energy Footprint” (SEF) standard for measuring and comparing software energy effectiveness


The worldwide energy consumption of networks, personal computers and data centers has grown from 4% in 2007 to 4,7% in 2012, not taking into account the use and recharging of mobile phones and tablets (Overview of ICT energy consumption, 2013). This increased amount of energy demand as a result of ICT usage will become a challenge in a future with less abundant energy resources.

As we are still highly dependent on the use of non-renewable fossil fuel for extracting energy, there is a strong relation between carbon emission and energy consumption. Attempts to place focus on carbon emission has for example been made in the food industry, by introducing certain certifications such as “Svenskt Sigill” and “KRAV”. For a food product to be eligible for such a certificate, the producer has to reach certain criteria regarding how the food is produced. A more general form of these certifications is the so-called “Product Carbon Footprint” or “PCF” for short. The overall purpose of these different ways of labeling products as more or less “eco-friendly” is to enforce the consumer into making better (or “greener”) decisions and thus pushing the producers into improving their production methods etc. A known difficulty in measuring such a PCF is that it is hard to accurately analyze every step of the product lifetime and production.

In the context of ICT hardware there exists similar certifications such as “Energy Star” that promote energy efficient ICT products and the likes. A Swedish example is "TCO" which prompts hardware producers to take both a social and environmental responsibility. Although this is all well, the promoting energy effectiveness of ICT software is not as prevalent.

My proposal/idea is to try implementing an energy efficiency standard for ICT software, to further improve software energy effectiveness in the future. While some areas within software development do take energy effectiveness into account, the reasons are often not based on making a smaller PCF or being more sustainable. Take mobile and web development as examples. Making energy efficient and optimized software for mobile platforms (smartphones and tablets) is a critical factor in achieving user satisfaction. If the application drains the battery life of your phone in a few minutes, no one will use the application. Similarly, if a web page is way to large (in terms of downloaded source code) resulting in slow loading times, then users will not want to visit the page.

The case is different if we take a look at stationary computers, such as PCs and servers. Plugged into the wall-socket, we do not have the same energy-use constraints as for mobile devices. Thus energy efficient software will not emerge as a “natural” requirement in such a context and energy efficiency may instead be traded for even greater processing power/computations. As we are currently moving closer and closer towards a “future in the cloud”, where most of the heavy lifting (computations requiring much processing power) is done remotely on a plugged-in server, the need and incentive for developing energy efficiency software might even be decreasing.

There has been, and currently are, a few projects looking at the possibilities to accurately measure energy consumption in relation to software. One research project measured and compared the energy use of loading different web sites using different web browsers by connecting sensors to various hardware components (SEFLab: A Lab for Measuring Software Energy Footprints, 2013). They were able to detect significant variations in energy usage, indicating the importance of software design. One of the greatest challenges in measuring the energy use is that different hardware components act in different ways and that the distribution of computations may vary.

Two other projects attempt to bypass this issue using software-based measurements and by modeling the hardware in a virtual machine. This way, the energy use of software can be monitored on a process-level. The Microsoft “Joulemeter” and “PowerAPI” would enable custom software energy benchmarking in order to place a certain software on a standardized “Software Energy Footprint” (SEF) scale. Software developers would then be able to certify their software and/or get a SEF rating from a trusted source performing such benchmarking, indicating that the software is written in a sustainable manner. A high SEF-rating and a certificate would hopefully encourage consumers to prefer these products, both in terms of making a responsible choice and getting software that (at least for mobile computers and devices) will increase the battery lifetime. Such a certificate/rating could easily be added to appstores, both for the mobile and the PC market. An increased focus on developing and using energy efficient software might be able to somewhat reduce both out ICT energy needs and ICT energy consumption in the future.

There is of course a variance in average energy consumption between different categories of software. It would for example be quite meaningless to compare the energy effectiveness of say the game "Minesweeper" and the game "Battlefied 4", or comparing "Microsoft Word" and the clustered processes behind "NCBI Blast". Thus one would need to define various categories that then could be more realistically benchmarked against (for example comparing different browsers against one another, Microsoft Word vs. Open Office etc.).

As I see it, there are a few positive drivers that could enforce an increased focus on software energy efficiency. For example, utilizing the open source community would be a great way of circulating energy efficient code. Energy efficient code snippets and solutions could easily be shared (and iteratively improved) across the Internet. Calling upon the "hacker spirit" (mentioned in Zapico, J. (2013). The hacker ethic, openness and sustainability), an internal driving force for developing good software already exists.

Speaking of "hackers", Green Hackathons could be arranged with energy efficient software development in focus. A goal could be to solve a specific task in the most energy efficient way possible.

Another good (and very much practical) idea would be to integrate energy efficiency benchmarking in the compiler (I believe it was Mårten Cederman who pointed this out). Similar functionality exist already in IDE's such as Apple's Xcode, which has the ability to monitor resources such as CPU and present this graphically to the developer in real-time. Still, there is no way of knowing how much energy that is used. A energy-usage monitor integrated in the compiler would serve as a must-have tool for developers trying to optimize the energy effectiveness of their algorithms and solutions.

Taking on the economical perspective (or "lens"), a more thought-through development process will likely take more time, increasing the cost for such "green" software in terms of time and money. Nevertheless, considering enterprise applications that might be deployed for one or several years, the reduced cost in energy as a result of more energy efficient software would probably dwarf the initial increase in cost for the software. Thus there could be economical benefits for both developers and consumers.

Now, this became quite like what is usually described as "big wall of text" but I hope someone found it interesting. It would be fun to hear if anyone has got any ideas for further elaborating the proposal or perhaps find more challenges in making this real! =)


References

Lannoo, Bart, Lambert, Sofie et. al. 2013. Overview of ICT energy consumption, FP7-288021, The EINS Consortium, Network of Excellence in Internet Science

Klimatmärkning av livsmedel http://www.naturvardsverket.se/Documents/publikationer/978-91-620-6355-9.pdf, presented in januari 2010.

Ferreira, Miguel A. et. al., SEFLab: A Lab for Measuring Software Energy Footprints
http://www.sig.eu/en/Research/Key%20publications/Archive/1285/SEFLab--A-Lab-for-Measuring-Software-Energy-Footprints.html

SEFLab, website: http://www.seflab.com

1 comment:

  1. While smart grid technology is an incredibly efficient method of measuring overall energy usage, waste, costs, and functionality, it is only as good as our end users and consumers. Smart grid technology developers and manufacturers can spend all their time, money, and resources improving and developing smart grid technology, however, enterprise-level companies, businesses, and home residents are the ones that will truly benefit. Enterprise-level companies and businesses want to ensure that smart grid technology truly provides them with the data and information needed for decision-making.
    Best energy efficiency software USA


    ReplyDelete