Software Energy-Efficiency: Architecture and Implementation Tactics

Max Meinhardt
4 min readMay 25, 2023

--

In recent decades, software development has prioritized modularity and economies of scale, leading to rapid and cost-effective implementation but compromising energy efficiency. However, as energy costs rise and the world embraces renewable energy, the importance of software energy-efficiency processes, tools, and best practices has grown significantly. To address this, it is crucial to identify software architecture and implementation tactics that enhance energy efficiency while minimizing negative impacts on application speed. Incorporating these tactics during software architecture and automating them with simple and transparent DevOps tools will be essential for consistently creating energy-efficient software.

This article kicks off a series on Software Energy-Efficiency, focusing on the tactics employed in reducing energy consumption in Web and IoT applications across native and cloud-native environments.

What can be done? Why?

Photo by Diego PH on Unsplash

Multiple sources [1][2] demonstrate that the tactics described in the diagram below can reduce software energy consumption by 5% to over 50% while minimizing performance loss. However, several factors can influence these outcomes. For instance, consider the comparison between a polled event handler and an interrupt-driven event handler, both delivering the same performance. Yet, their energy efficiency can significantly vary depending on the polling frequency and event occurrence. During software architecture and development, it is essential to analyze such issues and others to maximize software energy efficiency and maintain awareness of it.

The need for this awareness will continue to intensify as energy prices rise and carbon emission regulations become stricter, particularly in industries responsible for a significant carbon footprint. Notably, the ICT sector is increasingly contributing to this footprint. If its growth rate matches that of 2007 to 2020, global greenhouse gas emissions from the ICT sector will increase from 3.0–3.6% in 2020 to 14% by 2040, as per Vos et al. [3]. This substantial shift in global macroeconomic policies will prompt the integration of energy-efficiency best practices, tools, and process automation into the software industry, akin to what has been achieved in the cybersecurity industry.

The diagram below provides a summary of tactics for architecting energy-efficient software, partially derived from the research paper titled “Architectural Tactics to Optimize Software for Energy Efficiency in the Public Cloud” (Vos et al. [3]). The breakdown of these tactics is described in the articles shown in the section entitled “Articles in this series” below.

Software Architecture Energy-Efficiency Tactics

Is there a monetary reason for doing this?

Aside from the increasing government carbon regulations, skyrocketing energy costs, and effects on nature, the motivation for increasing the energy efficiency of your software may also be exacerbated by the need to increase its speed and decrease its resource utilization, thereby reducing hardware demands, networking bandwidth, and hence the associated cloud hosting costs or required minimum hardware specifications of embedded applications. Then there is the effect of increased performance, but you get the picture.

It is worth noting that simultaneously increasing energy efficiency and performance is feasible in many but not all cases. Maintaining a consistent review process for this is key to maintaining the optimization of this relationship.

Conclusion

The increase in energy prices and the global push for low carbon emissions policies will continue to accelerate, placing pressure on companies and individuals to adapt. As the ICT industry moves into this new era, the importance of software energy-efficiency becomes even more pronounced.

Establishing a solid foundation of software energy-efficient architecture and implementation tactics, processes, and tools is essential for addressing this challenge.

This article serves as the first installment in a series that aims to partially fulfill this need by providing a reference guide for software energy-efficiency tactics during the initial stages of the development process or when re-architecting existing code.

Articles in this series

The following articles form a comprehensive series that explores the Software Architecture Energy-Efficiency Tactics diagram mentioned above. They address the resource categories that are shown in the diagram above.

References

[1]: Roskilde University, University of Bristol, IMDEA Software Institute, XMOS Limited. March 1, 2016. ENTRA 318337 — Whole-Systems ENergy TRAnsparency — Energy-Aware Software Development Methods and Tools. In beneficiary of IMDEA Software Institute. http://entraproject.ruc.dk/wp-content/uploads/2016/03/deliv_1.2.pdf. accessed on 2022–06–27.

[2]: Kenan Liu, Khaled Mahmoud, Joonhwan Yoo, Yu David Liu. 2022. Vincent: Green Hot Methods in the JVM, 29 pages.

[3]: Sophie Vos, Patricia Lago, Roberto Verdecchia, Ilja Heitlager. Architectural Tactics to Optimize Software for Energy Efficiency in the Public Cloud. 2022, 11 pages.

--

--