Una nueva herramienta identifica el origen de los errores causados por las actualizaciones de software.
Es una frustración habitual: las actualizaciones de software, que pretenden hacer que nuestras aplicaciones funcionen más rápido, acaban inadvertidamente haciendo justo lo contrario. Estos errores, llamados regresiones de rendimiento en informática, llevan mucho tiempo corregirlos porque localizar errores de software suele requerir una considerable intervención humana.
Para superar este obstáculo, investigadores de la Universidad Texas A&M, en colaboración con científicos informáticos de Intel Labs, desarrollaron una forma totalmente automatizada de identificar el origen de los errores. Su algoritmo, basado en una forma especializada de aprendizaje automático llamada aprendizaje profundo, no solo está listo para usar, sino que también es rápido. Detecta errores de rendimiento en apenas unas horas, en lugar de días.
«A veces, actualizar el software puede volverse en tu contra cuando se cuelan errores y provocan ralentizaciones. El problema se acentúa aún más en las empresas que utilizan sistemas de software a gran escala y en constante evolución», afirma Abdullah Muzahid, profesor adjunto del Departamento de Informática e Ingeniería. «Hemos diseñado una herramienta práctica para diagnosticar regresiones de rendimiento, compatible con una amplia variedad de programas y lenguajes de programación, lo que amplía enormemente su utilidad».
Contadores de rendimiento
Para localizar el origen de los errores en un programa, los depuradores suelen comprobar el estado de los contadores de rendimiento de la unidad central de procesamiento. Estos contadores son líneas de código que supervisan cómo se ejecuta el programa en el hardware del ordenador, por ejemplo, en la memoria. Así, cuando el software está en marcha, los contadores registran, entre otras cosas, cuántas veces accede a determinadas ubicaciones de memoria, cuánto tiempo permanece allí y cuándo sale. Por eso, cuando el comportamiento del software se desvía de lo previsto, se vuelve a recurrir a los contadores para el diagnóstico.
«Los contadores de rendimiento dan una idea del estado de ejecución del programa», afirma Muzahid. «Así que, si un programa no funciona como debería, estos contadores suelen mostrar señales reveladoras de un comportamiento anómalo».
Sin embargo, los ordenadores de sobremesa y servidores más recientes tienen cientos de contadores de rendimiento, por lo que resulta prácticamente imposible supervisar manualmente el estado de todos ellos y buscar patrones anómalos que indiquen un error de rendimiento. Ahí es donde entra en juego el aprendizaje automático de Muzahid.
Encontrar el error
Al utilizar aprendizaje profundo, los investigadores pudieron supervisar simultáneamente los datos procedentes de un gran número de contadores reduciendo su tamaño, de forma parecida a comprimir una imagen de alta resolución hasta una fracción de su tamaño original cambiando su formato. Con los datos de menor dimensionalidad, su algoritmo pudo buscar patrones que se desviaran de lo normal.
Cuando el algoritmo estuvo listo, los investigadores comprobaron si podía encontrar y diagnosticar un error de rendimiento en un programa comercial de gestión de datos que las empresas utilizan para llevar el seguimiento de sus cifras y datos. Primero, entrenaron el algoritmo para que reconociera datos normales de los contadores, ejecutando una versión anterior del programa de gestión de datos, sin errores. Después, ejecutaron el algoritmo en una versión actualizada del programa que contenía un error. Comprobaron que el algoritmo localizó y diagnosticó el error en unas pocas horas. Muzahid señala que este tipo de análisis podría llevar bastante tiempo si se hiciera manualmente.
Además de diagnosticar regresiones de rendimiento en el software, Muzahid señala que el algoritmo de aprendizaje profundo podría utilizarse también en otros ámbitos de investigación, como el desarrollo de la tecnología necesaria para la conducción autónoma.
«La idea básica vuelve a ser la misma: poder detectar un patrón anómalo», afirma Muzahid. «Los coches autónomos deben poder detectar si tienen delante un coche o una persona y actuar en consecuencia. Así que, de nuevo, se trata de una forma de detección de anomalías, y la buena noticia es que nuestro algoritmo ya está diseñado para eso».
Los investigadores presentaron sus hallazgos en diciembre, durante la conferencia sobre sistemas de procesamiento de información neuronal.
El trabajo contó con el apoyo de la Fundación Nacional de Ciencias y de Intel.


