Projects details

  • SoftGreenReps - Software Repositories for Green Computing
  • Jan 2016 - Dec 2017
  • Recent research in software engineering has defined powerful techniques to improve software developers productivity by providing, for example, advanced type and modular systems, integrating developing environments (IDE), testing and debugging frameworks and tools, etc. Moreover, compiler construction techniques were developed to improve the execution time of software, namely by using runtime compilation, advanced garbage collectors, parallel execution, etc. All these engineering techniques and tools aim at helping software developers quickly define correct programs with optimal runtime. In fact, computer/software performance (i.e., execution time) was the primary goal in the last century. However, performance is no longer the only and main concern. Indeed, improving the energy efficiency of computer programs is more and more a concern and energy consumption is actually becoming an increasing bottleneck for both hardware and software systems. Truly remarkable estimations suggest that the costs of energy consumption in the field of information and communications technology (ICT) will be increasing over the next 20 years which alone is a great incentive for green practices. The ICT with its intrinsic properties and with their use, helps to reduce the energy consumption in other sectors. Nonetheless, it has a forecast increase in their energy consumption. Its share of 7% in global energy consumption will be increased to more than 14.5% in 2020. Recently, hardware manufacturers and researchers have developed techniques to reduce energy consumption mainly focused on developing and optimizing their hardware. This is the natural approach to reduce energy consumption since it is literally the hardware which consumes energy. However, very much like how a driver operating a car can heavily influence its fuel consumption, the software which operates such hardware can drastically influence its energy consumption too! Reducing energy consumption through software improvement has recently been an important research interest. In fact, in the last years we have seen several works being developed proposing techniques and tools to analyze energy consumption and relate it to software. The analysis granularity level varies between works. There are examples where it is possible to relate energy consumption to program executions, code blocks, such as methods, loops, data structures, or even singles instructions, and even to assembly individual instructions. While these contributions have significantly improved the state of the art in terms of software energy consumption optimization, they have been validated atomically. That is to say that concrete experiments, possibly based and applied to different software artifacts, have been designed for each contribution. This is due to the fact that there exists no software repository which could provide a coherent and uniform baseline for the comparison of all techniques. In this project, we will study, develop and release for public use a large repository of realistic programs. Our aim is to provide an artifact which can systematically be used by the academy and by the industry as evidence to sustain research directions or to validate, in a comparable setting, the different techniques and methodologies to improve the energy efficiency of software. For each of the programs within the repository, we will also compute a large data-set of energy-related metrics at different levels (e.g. line of code, function, module). This means that not only may the repository be used as an artifact for the improvement or validation of an energy-related contribution, but this purpose may also be served by the informative data that we will provide based on the programs of the repository. Energy consumption is particularly relevant in large software systems which perform computing/hardware (CPU, memory, disc) intensive tasks. Thus, we also plan to use our own repository and its data-set to propose some initial green-aware methods in (real) large scale software. We will conduct our research in three main axis. Firstly, we will compile a large software repository suitable to green-aware analysis. We will compile a large corpus of Java software systems representing a coherent, complete and state of the art systems where energy consumption is a concern (for example, data center management software systems, web browsers, etc.). The very large Java software repository developed and maintained by the USA team will be the building block for this work. Our goal is that this repository will be freely available to the academic and industrial communities so that it will serve as the test-bed to study energy consumption. Secondly, we will define and apply a catalog of energy-aware software metrics by monitoring the energy consumption of the software systems in the repository. The work developed by the Portuguese team will be the basis for this task. With this task we want to provide a large data-set usable as an artifact to complement the software repository itself. Finally, we will use the developed repository to perform data/source code mining in order to find initial insights on energy consumption in the large. We will use the artifacts proposed in the earlier sections in order to provide valuable insights resulting from a large scale, energy-focused analysis and improvement of software.
  • CB
  • UC - Universidade de Coimbra
  • FCT-MCTES - Fundação para a Ciência e a Tecnologia (MEC)
  • National Science Foundation
  • 10000
  • 1500
  • 1 Jan 2016
  • 31 Dec 2017
  • João Paulo Fernandes, Jácome Cunha [Researcher], Simão Melo de Sousa [Researcher], João Alexandre Saraiva, Marco Couto, Rui Pereira, Cristina Videira Lopes, Pedro Martins
  • University of California, Irvine