Profiling de
aplicaciones
El profiling de aplicaciones es
un estilo de análisis dinámico de software en el cual una herramienta llamada
comunmente profiler recolecta
información sobre el tiempo utilizado durante la ejecución de un programa por
parte de los componentes a evaluar con el ánimo de identificar demoras o
situaciones que puedan representar problemas de rendimiento de la aplicación.
De manera general lo que se busca con este tipo de pruebas es identificar los
tiempos o el uso de los componentes que conforman nuestra aplicación.
El análisis realizado al utilizar
la información recolectada durante la ejecución de la aplicación en cuestión
estará relacionado directamente con el método utilizado para obtener los datos,
por lo que el tipo de herramienta utilizada se vuelve de vital importancia para
tener una buena idea de la calidad o resolución de los datos obtenidos. Como regla podríamos decir que a medida que
obtengamos mayor exactitud en los datos recolectados, mayor será el impacto en
el rendimiento de la aplicación monitoreada. A continuación se describen los
tipos más comunes de profilers según la forma utilizada para monitorear la
ejecución y se presentan adicionalmente algunas ventajas y desventajas de los
mismos.
Basados en eventos
Este tipo de herramientas
permiten la verificación de la mayoría de los tipos de evento presentados
durante la ejecución de la aplicación objetivo, por ejemplo, el inicio de un
llamado a una función o la carga de una biblioteca dinamica. Dado que la información se relaciona
directamente los eventos producidos, este tipo de aplicaciones puede impactar
el performance de la aplicación de manera general, por lo que es usual que se
utilice en ambientes de desarrollo y pruebas de investigación pero no en
escenarios donde afectar el rendimiento del sistema pueda representar un riesgo
como en el ambiente de producción. La
resolución de este tipo de herramientas es por lo general mejor que la de otro
tipo de profilers por la cantidad de datos recolectados pues no tienen pérdidas
significativas de información relacionada con los eventos interceptados.
Profilers estadísticos
Los profilers estadísticos por
otra parte funcionan recolectando muestras periódicas, es decir, interrumpiendo
la ejecución de la aplicación analizada y verificando la tarea realizada en el
momento de la interrupción. Típicamente
este tipo de profilers utilizan llamados a funciones del sistema operativo para
suspender los procesos y obtener el valor del program counter o puntero a
instrucción (EIP, RIP) periodicamente y realizar un recorrido llamado stackwalk en el que se identifican las
funciones en la pila de llamados a partir de la navegación entre cada uno de
los frames en la pila del hilo en ejecución.
Numéricamente los valores obtenidos con este tipo de herramientas son de
una precisión inferior a los obtenidos con los profilers basados en eventos y
esto se debe a que la información analizada corresponde únicamente a la
obtenida para los puntos de ejecución muestreados, sin embargo, una cualidad de
este tipo de herramientas radica en su bajo impacto en el rendimiento de la
aplicación, logrando que el programa objetivo funcione más cerca de su
velocidad real.
Profilers de instrumentación
Otro tipo de herramientas abordan
el problema de obtención de datos modificando la aplicación que se desea
analizar, al código agregado se le denomina instrumentación y dependiendo de los puntos instrumentados (por
ejemplo si decidiéramos instrumentar todo el código) dentro de la aplicación
puede suponer un gran impacto en el rendimiento de la aplicación medida. Para que las pruebas sean efectivas y
correctas este tipo de herramientas dependen en gran medida de lo específica
que sea la instrumentación realizada y no brindan gran flexibilidad sobre el
impacto en la aplicación.
Desafortunadamente para la identificación de problemas suele requerir
que se tenga una idea de los componentes implicados en la situación para poder
instrumentarlos, hecho que no siempre es evidente.
Salida de profilers
Según el tipo de salida generada
los profiler peden clasificarse en dos categorías, la primera corresponde a
aquellas herramientas que únicamente calculan el tiempo promedio por llamado
sin preocuparse de diferenciar entre el tiempo propio del método o función
involucrada y el tiempo consumido por los llamados a otros métodos por parte de
dicha función, a este tipo de herramientas se les conoce como profilers planos
o flat profilers. La segunda categoría está asociada con las
herramientas cuya salida contemplan en su análisis las diferentes rutas del
código y el contexto de la ejecución y pueden diferenciar entre el tiempo
própio consumido por una función del tiempo consumido por cada uno de sus
llamados, a estas herramientas se les conoce como profilers de gráfos de
llamadas y son más detallados y elaborados que los profilers planos.
No hay comentarios:
Publicar un comentario
Los comentarios son parte activa de este blog y no serán moderados. Siéntete cómodo al dar tu opinión. Esta es muy importante para nosotros.