Beruflich Dokumente
Kultur Dokumente
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
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
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.
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.
Java (lenguaje de programacin) (Java Virtual Machine Tools Interface) Microsoft .NET Python Ruby
Manual Automtica a nivel de cdigo Asistida por el compilador Translacin binaria Instrumentacin en tiempo de ejecucin Inyeccin en tiempo de ejecucin
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