Está en la página 1de 5

Anlisis de rendimiento de software

En ingeniera de software el anlisis de rendimiento, comnmente llamado profiling, es la investigacin del comportamiento de un programa de computadora usando informacin reunida desde el anlisis dinmico del mismo. El objetivo es averiguar el tiempo dedicado a la ejecucin de diferentes partes del programa para detectar los puntos problemticos y las reas dnde sea posible llevar a cabo una optimizacin del rendimiento (ya sea en velocidad o en consumo de recursos).1 Un profiler puede proporcionar distintas salidas, como una traza de ejecucin o un resumen estadstico de los eventos observados.2 Usualmente el Profiling es utilizado durante el desarrollo de software como mtodo para la depuracin y optimizacin de los algoritmos, esta prctica vista de esta manera es buena, pero es vista mas como una actividad interna que suele carecer de objetividad y veracidad cuando no es evaluado por personal realmente especializado y en el entorno adecuado para ello.3 El profiling se puede llevar a cabo en el cdigo fuente o sobre un binario ejecutable mediante una herramienta llamada profiler. Los profilers pueden clasificarse segn la forma de recopilacin de datos que utilicen, pudiendo destacar: basados en eventos, estadsticos, con instrumentacin de cdigo y como simulacin.4
ndice
[ocultar]

1 Historia 2 Recopilacin de los eventos del programa 3 Salida generada por un profiler 4 Tipos de profilers basados en su salida 5 Granularidad de los datos en los diferentes tipos de profilers

o o o o o o

5.1 Profilers basados en eventos 5.2 Profilers estadsticos 5.3 Profilers instrumentadores 5.4 Instrumentacin 5.5 Interpretador de instrumentacin 5.6 Hipervisor/Simulador

6 Vase tambin 7 Referencias 8 Enlaces externos

Historia[editar editar cdigo]

Las herramientas de anlisis de rendimiento ya existan en las plataformas IBM S/360 y IBM System/370 de principios de 1970. Generalmente se basaba en un temporizador de interrupciones que se registraban en el programa de palabra de estado (Program status word, PSW) (que era un contador de programa y un registro de estado a la ves en estas arquitecturas) en intervalos establecidos para detectar hot spots en la ejecucin del cdigo. 5 Este fue un ejemplo temprano de muestreo en estadstica que es un tipo que se vera a continuacin. A principios de 1974, elsimulador de conjunto de instrucciones permiti realizar trazas completas y otras funciones de supervisin del rendimiento. Los programas analizadores de rendimiento en Unix se remontan al menos a 1979, cuando los sistemas Unix inclua la herramienta bsica prof que aparece cada funcin y la cantidad de tiempo de ejecucin del programa utilizado. En 1982, gprof extendi el concepto a un anlisis llamado grafo de llamadas.6 En 1994, Amitabh Srivastava y Alan Eustace de Digital Equipment Corporation publican un artculo describieno ATOM.7 ATOM es una plataforma para convertir un programa en su propio profiler. Es decir, en tiempo de compilacin, inserta el cdigo en el programa a ser analizado. Ese cdigo introducido produce salidas de datos de anlisis. Esta tecnica (modificar un programa para analizarse a si mismo se conoce como instrumentacin). En 2004, tanto el "paper" de gprof como el de ATOM aparecieron en la lista de los 50 "papers" ms influyentes de Programming Language Design and Implementation de todos los tiempos.8

Recopilacin de los eventos del programa[editar editar cdigo]


Los profilers utilizan una amplia variedad de tcnicas para recopilar datos, incluyendo: interrupciones por hardware, instrumentacin de cdigo, simulador de conjunto de instrucciones, hooking ycontadores de rendimiento de hardware. El profiling es la tcnica mas usada dentro de la ingeniera de rendimiento.

Salida generada por un profiler[editar editar cdigo]


La salida que puede generar un profiler depende del mismo, generalmente son las siguientes:

Un resumen estadstico de los eventos observados (un perfil): Un resumen de la informacin del perfil se muestra a menudo anotado contra las declaraciones de cdigo fuente donde se producen los eventos, por lo que el tamao de los datos de medicin es lineal para el tamao del cdigo del programa.

/* ------------ source------------------------- count */ 0001 0002 0003 0004 IF X = "A" THEN DO ADD 1 to XCOUNT ELSE 0032 0055

0005

IF X = "B"

0055

Una secuencia de eventos grabados (un seguimiento): Para programas secuenciales, un perfil, es generalmente suficiente, pero los problemas de performance en programas paralelos (que esperan mensajes o temas de sincronismo) a menudo dependen de la relacin temporal de los acontecimientos, por lo que requieren un seguimiento completo para obtener una comprensin de lo que est sucediendo.

Una interaccin permanente con el hipervisor (vigilancia continua o peridica a travs de la visualizacin en pantalla por ejemplo). Esto proporciona la oportunidad de cambiar un rastro o desactivarlo en cualquier momento que desee durante la ejecucin, adems de ver las mtricas en curso sobre el programa (en ejecucin). Adems proporciona la oportunidad de suspender procesos asncronos en los puntos crticos para examinar las interacciones con otros procesos paralelos en ms detalle.

Tipos de profilers basados en su salida[editar editar cdigo]

Flat profilers: Calculan el tiempo promedio de las llamadas, y no se descomponen los tiempos de llamadas basado en el destinatario o el contexto de la misma.

Profiler de grafo de llamadas: Muestran los tiempos de llamada y las frecuencias de las funciones, as como las cadenas de llamadas en que participan basadas en el destinatario de la llamada. En algunas herramientas de contexto completo no se conserva.

Granularidad de los datos en los diferentes tipos de profilers[editar editar cdigo]


Los profilers, que tambin son propios programas, analizar programas especficos mediante la recopilacin de informacin sobre su ejecucin. Basado en su granularidad de datos, la forma en que los profilers recopilan informacin, se clasifican en profilers basados en eventos o estadsticos. Ya que los profilers interrumpen la ejecucin del programa para recopilar informacin, tienen una resolucin finita en las mediciones de tiempo, los cuales se deben tomar como un subconjunto del total de informacin.

Profilers basados en eventos[editar editar cdigo]


Los lenguajes de programacin que se listan a continuacin poseen un profiler basado en eventos:

Java (lenguaje de programacin) (Java Virtual Machine Tools Interface) Microsoft .NET Python Ruby

Profilers estadsticos[editar editar cdigo]


Algunos profilers operan por muestreo. un profiler por muestreo prueba el "Program counter" del programa objetivo a intervalos regulares usando interrupciones del sistema operativo. Los profilers de muestreo son tpicamente menos exactos numricamente y especficos, pero permiten que el programa de destino funcione cerca de la velocidad mxima.

Profilers instrumentadores[editar editar cdigo]


Algunos profilers "instrumentan" el programa objetivo con instrucciones adicionales para recopilar la informacin necesaria. Instrumentar el programa puede causar cambios en el rendimiento del programa, que pueden causar resultados inexactos y heisenbugs. Instrumentar siempre tendr algn impacto en la ejecucin del programa, por lo general siempre es ms lento. Sin embargo, la instrumentacin puede ser muy especfica y ser controlada cuidadosamente para tener un impacto mnimo. El impacto sobre un programa en particular depende de la colocacin de puntos de instrumentacin y el mecanismo que se utiliza para capturar la traza. El soporte de hardware para capturar la traza significa que en algunos objetivos, la instrumentacin puede tener slo una instruccin de mquina. El impacto de la instrumentacin a menudo se puede deducir (es decir, eliminada por sustraccin) a partir de los resultados. gprof es un ejemplo de un profiler que utiliza tanto la instrumentacin y el muestreo. La instrumentacin se utiliza para recopilar informacin de las llamadas y los valores de tiempo real se obtienen mediante muestreo estadstico.

Instrumentacin[editar editar cdigo]


La instrumentacin es clave para determinar el nivel de control y la cantidad de resolucin de tiempo disponible para los profilers. A continuacin se enumeran todas las categoras:

Manual Automtica a nivel de cdigo Asistida por el compilador Translacin binaria Instrumentacin en tiempo de ejecucin Inyeccin en tiempo de ejecucin

Interpretador de instrumentacin[editar editar cdigo]


Las opciones del intrprete de depuracin permiten habilitar la recopilacin de mtricas de rendimiento cuando el intrprete se encuentra con cada declaracin de destino. Los bytecodes, tablas de control y intrpretes JIT son tres ejemplos que suelen tener un control completo sobre la ejecucin del cdigo de destino, lo que permite la oportunidad de recolectar datos muy completos.

Hipervisor/Simulador[editar editar cdigo]

Hipervisor: Los datos se recogen mediante la ejecucin del programa (por lo general) no modificada bajo un hipervisor. Por ejemplo SIMMON.

Simulador y Hipervisor: Los datos son recogidos de forma interactiva y selectiva mediante la ejecucin del programa sin modificar en el marco de un simulador de conjunto de instrucciones. Por ejemplo IBM OLIVER y SIMON

Vase tambin[editar editar cdigo]



Pruebas de rendimiento del software Anlisis dinmico de software