A Model-based Framework for the Analysis of Software Energy Consumption
Resumo
Software is present in all types of devices, some of them with restrictions as to the amount of energy they can spend to execute software applications. For this reason, energy costs are becoming an important factor during software development and evolution. However, there is still little support for creating energy-efficient software. In this work, we introduce a possible framework for software energy costs evaluation based on model analysis. We model software as Labelled Transitions Systems (LTS) and annotate these models with energy costs, which can be obtained using existing tools. We can then apply graph-based algorithms to traverse the models to obtain information about energy consumption related to software behaviour, such as its most/least costly execution, the cost of a specific execution, and the average cost of executing the software. No existing tool currently provides all the necessary analyses, even though they are essential for energy-consumption evaluation. We have conducted a small experiment with our framework where we employed jRAPL to measure energy costs. We annotated the models with the collected energy costs using an extended version of the LoTuS tool, where we have also implemented some of the desired analyses. Based on this support and on our initial results, we believe developers could create software more energy-efficient and consider possible trade-offs related to time, space, and energy costs when producing new versions of their systems.
Referências
asmeet Singh, Kshirasagar Naik, and Veluppillai Mahinthan. 2015. Impact of Developer Choices on Energy Consumption of Software on Servers. Procedia Computer Science 62 (2015), 385--394. https://doi.org/10.1016/j.procs.2015.08.423SCSE'15.
Christel Baier, Clemens Dubslaff, Joachim Klein, Sascha Klüppelholz, editor="van Breugel Franck Wunderlich, Sascha", Elham Kashefi, Catuscia Palamidessi, and Jan Rutten. 2014. Probabilistic Model Checking for Energy-Utility Analysis. Springer International Publishing, Cham, 96--123. https://doi.org/10.1007/978-3-319-06880-0_5
Davi Monteiro Barbosa, Rômulo Gadelha de Moura Lima, Paulo H. Maia, and Evilasio Costa. 2017. Lotus@Runtime: A Tool for Runtime Monitoring and Verification of Self-adaptive Systems. In 2017 IEEE/ACM 12th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS) (SEAMS '17). IEEE Press, Piscataway, NJ, USA, 24--30. https://doi.org/10.1109/SEAMS.2017.18
Nathan Binkert, Bradford Beckmann, and et al. 2011. The Gem5 Simulator. SIGARCH Comput. Archit. News 39, 2 (Aug. 2011), 1--7. https://doi.org/10.1145/2024716.2024718
Gordon Blair, Nelly Bencomo, and Robert B. France. 2009. Models@run.time. Computer 42, 10 (October 2009), 22--27. https://doi.org/10.1109/MC.2009.326
Fabio Salice Donatella Sciuto Carlo Brandolese, William Fornaciari. 2002. The impact of source code transformations on software power and energy consumption. Journal of Circuits, Systems, and Computers 11, 05 (2002), 477--502.
Betty H. C. Cheng, Rogério de Lemos, and et al. 2009. Software Engineering for Self-Adaptive Systems: A Research Roadmap. Springer Berlin Heidelberg, Berlin, Heidelberg, 1--26. https://doi.org/10.1007/978-3-642-02161-9_1
Erik D. Demaine, Jayson Lynch, Geronimo J. Mirano, and Nirvan Tyagi. 2016. Energy-Efficient Algorithms. In ITCS '16 (2016 ACM Conference on Innovations in Theoretical Computer Science). ACM, New York, NY, USA, 321--332. https://doi.org/10.1145/2840728.2840756
Lucio Mauro Duarte, Jeff Kramer, and Sebastian Uchitel. 2017. Using contexts to extract models from code. Software and Systems Modeling 16, 2 (2017), 523--557. https://doi.org/10.1007/s10270-015-0466-0
Clemens Dubslaff, Sascha Klüppelholz, and Christel Baier. 2014. Probabilistic Model Checking for Energy Analysis in Software Product Lines. In MODULARITY '14 (MODULARITY '14). ACM, New York, NY, USA, 169--180. https://doi.org/10.1145/2577080.2577095
Martin Fowler. 1999. Refactoring: Improving the Design of Existing Code. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.
S. Hao, D. Li, W. G. J. Halfond, and R. Govindan. 2013. Estimating mobile application energy consumption using program analysis. In 35th International Conference on Software Engineering (ICSE 2013). IEEE Press, 92--101.
S. Hasan, Z. King, M. Hafiz, M. Sayagh, B. Adams, and A. Hindle. 2016. Energy profiles of java collections classes. In 2016 IEEE/ACM 38th International Conference on Software Engineering(ICSE). ACM, 225--236.
IBM. 2005. An Architectural Blueprint for Autonomic Computing. Technical Report. IBM.
R. Jayaseelan, T. Mitra, and Xianfeng Li. 2006. Estimating the worst-case energy consumption of embedded software. In 12th IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS'06). IEEE, 81--90.
Robert M. Keller. 1976. Formal Verification of Parallel Programs. Commun. ACM 19, 7 (July 1976), 371--384.
Hammad Khalid, Emad Shihab, and et al. 2015. What Do Mobile App Users Complain About? IEEE Software 32, 3 (May 2015), 70--77. https://doi.org/10.1109/MS.2014.50
Nane Kratzke. 2018. A Brief History of Cloud Application Architectures. Applied Sciences 8, 8 (2018). https://doi.org/10.3390/app8081368
Marta Kwiatkowska, Gethin Norman, and David Parker. 2002. PRISM: Probabilistic Symbolic Model Checker. In International Conference on Modelling Techniques and Tools for Computer Performance Evaluation (TOOLS 2012), P. Kemper (Ed.). 200--204.
D. Li, B. Guo, Y. Shen, J. Li, J. Wang, Y. Huang, and Q. Li. 2016. Software Energy Consumption Estimation at Architecture-Level. In 2016 13th International Conference on Embedded Software and Systems (ICESS). 7--11. https://doi.org/10.1109/ICESS.2016.35
S. Li, J. H. Ahn, R. D. Strong, J. B. Brockman, D. M. Tullsen, and N. P. Jouppi. 2009. McPAT: An Integrated Power, Area, and Timing Modeling Framework for Multi-core and Manycore Architectures. In 2009 42nd Annual IEEE/ACM International Symposium on Microarchitecture (MICRO). 469--480.
Kenan Liu, Gustavo Pinto, and Yu David Liu. 2015. Data-Oriented Characterization of Application-Level Energy Optimization. In Fundamental Approaches to Software Engineering, Alexander Egyed and Ina Schaefer (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 316--331.
Andrea McIntosh, Safwat Hassan, and Abram Hindle. 2019. What can android mobile app developers do about the energy consumption of machine learning? Empirical Software Engineering 24, 2 (2019), 562--601.
Shin Nakajima. 2015. Model Checking of Energy Consumption Behavior. In Complex Systems Design & Management Asia, Michel-Alexandre Cardin, Daniel Krob, and et al. (Eds.). Springer International Publishing, Cham, 3--14.
Sam Newman. 2015. Building Microservices (1st ed.). O'Reilly Media, Inc.
Wellington Oliveira, Renato Oliveira, Fernando Castor, Benito Fernandes, and Gustavo Pinto. 2019. Recommending energy-efficient Java collections. In Proceedings of the 16th International Conference on Mining Software Repositories(MSR 2019). IEEE Press, 160--170.
R. Pereira. 2017. Locating Energy Hotspots in Source Code. In 39th International Conference on Software Engineering (ICSE 2017). 88--90. https://doi.org/10.1109/ICSE-C.2017.151
Rui Pereira, Marco Couto, João Saraiva, Jácome Cunha, and João Paulo Fernandes. 2016. The influence of the Java collection framework on overall energy consumption. In Proceedings of the 5th International Workshop on Green and Sustainable Software. ACM, 15--21.
Gustavo Pinto and Fernando Castor. 2017. Energy Efficiency: A New Concern for Application Software Developers. CACM 60, 12 (December 2017), 68--75. https://doi.org/10.1145/3154384
S. Schubert, D. Kostic, W. Zwaenepoel, and K. G. Shin. 2012. Profiling Software for Energy Consumption. In 2012 IEEE International Conference on Green Computing and Communications. 515--522. https://doi.org/10.1109/GreenCom.2012.86
V. K. Singh, K. Dutta, and D. VanderMeer. 2013. Estimating the Energy Consumption of Executing Software Processes. In GreenCom, iThings and CPSCom 2013. 94--101. https://doi.org/10.1109/GreenCom-iThings-CPSCom.2013.40