Uma abordagem estática para recomendar estruturas de dados Java para melhorar o consumo de energia

Submitted by Alice Araujo (alice.caraujo@ufpe.br) on 2018-05-02T22:09:29Z No. of bitstreams: 1 DISSERTAÇÃO José Benito Fernandes de Araújo Neto.pdf: 793651 bytes, checksum: 17e6b1ac1528ce716feaa7c768365410 (MD5) === Made available in DSpace on 2018-05-02T22:09:29Z (GMT). No. of bitstreams: 1 DISS...

Full description

Bibliographic Details
Main Author: ARAÚJO NETO, José Benito Fernandes de
Other Authors: http://lattes.cnpq.br/7310046838140771
Language:Portuguese
Published: Universidade Federal de Pernambuco 2018
Subjects:
Online Access:https://repositorio.ufpe.br/handle/123456789/24526
Description
Summary:Submitted by Alice Araujo (alice.caraujo@ufpe.br) on 2018-05-02T22:09:29Z No. of bitstreams: 1 DISSERTAÇÃO José Benito Fernandes de Araújo Neto.pdf: 793651 bytes, checksum: 17e6b1ac1528ce716feaa7c768365410 (MD5) === Made available in DSpace on 2018-05-02T22:09:29Z (GMT). No. of bitstreams: 1 DISSERTAÇÃO José Benito Fernandes de Araújo Neto.pdf: 793651 bytes, checksum: 17e6b1ac1528ce716feaa7c768365410 (MD5) Previous issue date: 2016-08-30 === Programadores Java possuem um amplo repertório de coleções a seu dispor. Essas coleções implementam abstrações bem conhecidas como listas, conjuntos, filas, e tabelas. Além disso, a linguagem conta com um rico acervo de coleções que podem ser utilizadas paralelamente por múltiplas threads em execução, sem comprometer a corretude do programa. Estudos anteriores demonstraram que essas coleções possuem diferentes características em termos de desempenho, escalabilidade, controle de concorrência e consumo de energia. Em particular, Pinto et al. (2016) investigaram os impactos do uso de diferentes coleções seguras para múltiplas threads no consumo de energia de uma aplicação. Esse estudo descobriu que diferentes operações de uma mesma implementação possuem diferentes características de consumo de energia e o mesmo se aplica a diferentes implementações de uma mesma abstração. Tendo em vista esta diferença do consumo de energia de acordo com a coleção e operação utilizadas, este trabalho tem por objetivo melhorar a eficiência de energia de aplicações concorrentes que fazem uso intenso de coleções através da recomendação automática de estruturas de dados mais eficientes em um determinado contexto. Dessa forma, este trabalho desenvolveu uma abordagem baseada em análise estática para analisar de forma automática o uso das estruturas de dados de uma aplicação e recomendar transformações necessárias de acordo com suas utilizações, de modo a reduzir o consumo de energia da aplicação. Mais especificamente analisou-se um total de 11 implementações de três tipos de estrutura de dados seguras para threads disponíveis na linguagem Java: conjuntos (4), mapas (4) e sequências (3). Utilizando a biblioteca WALA, a implementação da abordagem proposta apresenta recomendações das transformações necessárias para que as aplicações consumam menos energia. Esta recomendação é realizada através de uma heurística baseada no consumo de energia de cada coleção para um determinado ambiente. Para avaliar a abordagem, foram utilizados benchmarks, conhecidos na academia, de aplicações reais. Utilizando a abordagem proposta nesse trabalho foi percebida uma redução do consumo de energia de até 4.37%. Até onde foi possível averiguar, este é o primeiro trabalho que torna possível reduzir o consumo de energia de uma aplicação sem a necessidade de executá-la. === Java developers have a wide repertoire of collections at their disposal. These collections implement well-known abstractions such as lists, sets, queues, and maps. In addition, the Java language has a rich framework of collections that can be used in parallel by multiple threads running without compromising the correctness of the program. Previous work has shown that these collections have different characteristics in terms of performance, scalability, concurrency control, and energy consumption. In particular, Pinto et al. (2016) investigated the impact of using different thread safe collections on the energy consumption of an application. Among the findings, this study found that different operations of the same implementation have different characteristics, in terms of energy consumption, and the same applies to different implementations of the same abstraction. Since both dimensions, the operations and the collection implementation, impact energy, this work aims to improve the energy efficiency of concurrent applications that do intense use of collections by automatically recommending potentially more efficient collection implementations in a given context. Our approach leverages static analysis to collect information about how applications use thread-safe collections from Java and, based on the energy usage profiles of the operations of these collections, make informed recommendations that potentially save energy. We have developed CECOtool, a tool that implements this approach. Usage of the tool does not require the application under analysis to be executed. To evaluate the approach, we used well-known benchmarks based on two real-world applications. Using this approach we observed a reduction in energy consumption of up to 4.37%. To the best of our knowledge, this is the first work aiming to reduce the energy consumption of an application without the need to run it.