Software Development Lifecycle for Energy Efficiency: Techniques and Tools

Status:: 🟩
Links:: Energy-efficient Programming Integrating energy efficiency analysis into everyday software development

Metadata

Authors:: Georgiou, Stefanos; Rizou, Stamatia; Spinellis, Diomidis
Title:: Software Development Lifecycle for Energy Efficiency: Techniques and Tools
Publication Title:: "ACM Computing Surveys"
Date:: 2020
URL:: https://dl.acm.org/doi/10.1145/3337773
DOI:: 10.1145/3337773

Bibliography

Georgiou, S., Rizou, S., & Spinellis, D. (2020). Software Development Lifecycle for Energy Efficiency: Techniques and Tools. ACM Computing Surveys, 52(4), 1–33. https://doi.org/10.1145/3337773

Zotero

Type:: #zotero/journalArticle
Zotero::

Keywords:: [⏳, Measurement, πŸ’Ž, Green Software, Energy Efficiency, Benchmarking, Design Patterns, RAPL]

Relations

Abstract

Motivation: In modern it systems, the increasing demand for computational power is tightly coupled with ever higher energy consumption. Traditionally, energy efficiency research has focused on reducing energy consumption at the hardware level. Nevertheless, the software itself provides numerous opportunities for improving energy efficiency.

Goal: Given that energy efficiency for it systems is a rising concern, we investigate existing work in the area of energy-aware software development and identify open research challenges. Our goal is to reveal limitations, features, and tradeoffs regarding energy-performance for software development and provide insights on existing approaches, tools, and techniques for energy-efficient programming.

Method: We analyze and categorize research work mostly extracted from top-tier conferences and journals concerning energy efficiency across the software development lifecycle phases.

Results: Our analysis shows that related work in this area has focused mainly on the implementation and verification phases of the software development lifecycle. Existing work shows that the use of parallel and approximate programming, source code analyzers, efficient data structures, coding practices, and specific programming languages can significantly increase energy efficiency. Moreover, the utilization of energy monitoring tools and benchmarks can provide insights for the software practitioners and raise energy-awareness during the development phase.

Notes & Annotations

πŸ“‘ Annotations (imported on 2023-05-05#10:27:53)

georgiou.etal.2020.softwaredevelopmentlifecycle (pg. 6)

Proper design decisions are crucial when it comes to energy-efficient software development, as the software components and their interactions can alter significantly energy consumption.

georgiou.etal.2020.softwaredevelopmentlifecycle (pg. 7)

In conclusion, both Sahin et al. and Bunse et al. observed the negative impact of some design patterns in embedded and smart-phone devices regarding energy consumption. Moreover, Bunse et al. showed that particular design patterns causing high energy consumption were also contributing to lower runtime performance. As stated in both studies, the number of objects and communications among the software components comprise primary factors for increasing energy consumption. Both studies identified the Decorator and Abstract Factory as the most energy-inefficient design patterns.

georgiou.etal.2020.softwaredevelopmentlifecycle (pg. 21)

We use the term β€œsoftware energy monitoring tools” for software-based analyzers that utilize performance counters or estimation models to measure the energy consumption of running applications.

georgiou.etal.2020.softwaredevelopmentlifecycle (pg. 21)

By utilizing the Linux kernel pseudo file system (sysfs), rapl exposes kernel subsystems, hardware devices, and device driver information from the kernel to userspace allowing the estimation of the software’s energy consumption.

georgiou.etal.2020.softwaredevelopmentlifecycle (comment) (pg. 21)

jRAPL: Measure energy consumption of CPU, RAM, and Java Packages
https://github.com/kliu20/jRAPL/

πŸ“‘ Annotations (imported on 2023-07-19#15:28:50)

georgiou.etal.2020.softwaredevelopmentlifecycle (pg. 15)

Java and Python suffer the most from high energy consumption and low runtime performance. The use of an interpreter makes Python slower and less energy efficient, because it has to interpret source code for each execution. Moreover, the dynamic compiling, library linking, and interpretation of bytecode in jvm are additional burdens on the execution of Java programs.

πŸ“‘ Annotations (imported on 2023-07-19#15:31:57)

georgiou.etal.2020.softwaredevelopmentlifecycle (comment) (pg. 1)

Techniques to increase energy efficiency: Use of parallel and approximate programming, source code analyzers, efficient data structures, coding practices, and specific programming languages.