Reducción de consumo energético en aplicaciones científicas para dispositivos móviles a través de refactorización de código fuente - Rodríguez, Ana Victoria (2017)
La llegada de ambientes de cómputo que representan nuevos paradigmas de computación como los grid móviles y los clouds móviles, junto con el creciente número de dispositivos móviles con capacidades cada vez más potentes hace este tipo de dispositivos atractivos para los usuarios que ejecutan aplicaciones científicas y de HPC. Sin embargo, los dispositivos móviles aún tienen capacidades limitadas en comparación con otros dispositivos como PCs y sobre todo servidores, generando obstáculos para desarrollar software que aproveche las mismas. Aúnmás importante a la hora de realizar desarrollos móviles es tener en cuenta que los dispositivos móviles dependen de las baterías para su suministro de energía, por lo que los usuarios descartan las aplicaciones que afectan significativamente la duración de las mismas. Como resultado, aparece un nuevo requisito no funcional al momento de desarrollar aplicaciones para dispositivosmóviles: consumo energético. Comúnmente, los desarrolladores no saben cuánta energía consumen los diferentes componentes de hardware y el software. Entonces, a pesar de que estén capacitados para desarrollar software, necesitan pautas y conocimientos específicos para desarrollar aplicaciones eficientes energéticamente. Para atacar este problema, esta tesis de doctorado estudia cómo reducir el consumo de energía en dispositivosmóviles a través de refactorización de código fuente. Específicamente, investigamos este problema en el contexto de los núcleos computacionales intensivos recurrentes en aplicaciones científicas pero sin dejar de lado la posibilidad de extender los resultados a otras áreas. Particularmente, este estudio conlleva a contribuciones no sólo en el desarrollo de software móvil, sino también en el área de Green Computing. Para lograr el objetivo de este trabajo primero debemos delimitar el estudio a un sistema operativo (SO) específico y un lenguaje específico ya que el comportamiento energético varía de acuerdo al SO, el lenguaje y el hardware, entre otras variables. Entonces, luego de evaluar diferentes sistemas operativos y lenguajes, decidimos utilizar dispositivos móviles Android –el sistema operativo móvil más popular a nivel mundial– y desarrollar el estudio en Java, el lenguaje de alto nivel de Android. En un segundo paso, presentamos los trade-off entre el esfuerzo de análisis y refactorización necesario frente a la ganancia (en términos de energía) para cada refactorización, junto con el impacto en el diseño de la aplicación generado por aplicar estos refactorings. Además, se analizan los inconvenientes inherentes al uso de dispositivos móviles para la ejecución de códigos computacionalmente intensivos, limitando la investigación a teléfonos inteligentes y tabletas. La elección de Java, además, propicia el análisis del desempeño de los refactorings en desarrollo de aplicaciones científicas que corren en servidores, donde el uso de Java es altamente difundido. En resumen, la evaluación del enfoque apunta a medir el consumo energético de diferentes versiones de varios grupos de micro-benchmarks que representan operaciones primitivas comunes en aplicaciones científicas. Basándonos en el análisis de estas evaluaciones de micro-benchmarks derivamos guías de buenas prácticas para que los desarrolladores puedan aplicar las abstracciones de programación más eficientes desde el punto de vista energético en sus aplicaciones. Además, generamos guías prácticas para refactorizar aplicaciones existentes, propiciando así una reducción en su consumo energético. Finalmente, evaluamos y analizamos el impacto de tales refactorizaciones en aplicaciones móviles con uso intensivo de CPU. En todos nuestros experimentos utilizamos variedad de dispositivos móviles para obtener más generalidad al obtener los resultados ya que el consumo energético de una operación puede variar de acuerdo al hardware de cada dispositivo. Además, presentamos los resultados de los trabajos realizados sobre servidores con la finalidad de comparar el impacto obtenido en los diferentes ambientes de ejecución.