En programación informática , la instrumentación es el acto de modificar el software para poder realizar análisis sobre él. [ 1 ]
Generalmente, la instrumentación modifica el código fuente o el código binario . Los entornos de ejecución, como la JVM, proporcionan interfaces separadas para agregar instrumentación a la ejecución de programas, como JVMTI , que permite la instrumentación durante el inicio del programa.
La instrumentación permite la creación de perfiles [ 2 ] : medir el comportamiento dinámico durante una ejecución de prueba. Esto es útil para propiedades de un programa que no se pueden analizar estáticamente con suficiente precisión, como el análisis de rendimiento y alias .
La instrumentación puede incluir:
- Registro de eventos como fallas y el inicio y fin de la operación [ 3 ]
- Medir y registrar la duración de las operaciones
Limitaciones
La instrumentación está limitada por la cobertura de ejecución. Si el programa nunca llega a un punto específico de ejecución, la instrumentación no recopila datos en ese punto. Por ejemplo, si se instrumenta una aplicación de procesador de texto, pero el usuario nunca activa la función de impresión, la instrumentación no puede proporcionar información sobre las rutinas que se utilizan exclusivamente para dicha función.
La instrumentación aumenta el tiempo de ejecución de un programa. En algunos contextos, este aumento puede ser drástico y, por lo tanto, limitar la aplicación de la instrumentación a contextos de depuración. La sobrecarga de la instrumentación difiere según la tecnología de instrumentación utilizada. [ 4 ]
Véase también
- Intercepción de mensajes o eventos : conjunto de técnicas utilizadas para alterar o aumentar el comportamiento de un sistema operativo, de aplicaciones o de otros componentes de software mediante la interceptación de llamadas a funciones, mensajes o eventos que se transmiten entre componentes de software.
- Simulador de conjunto de instrucciones : simulación de todas las instrucciones a nivel de código máquina para proporcionar instrumentación.
- Inteligencia en tiempo de ejecución : tecnologías, servicios gestionados y prácticas para la recopilación, integración, análisis y presentación de los niveles, patrones y prácticas de uso de las aplicaciones.
- Análisis del rendimiento del software : técnicas para monitorizar el rendimiento del código, incluida la instrumentación.
- Contador de rendimiento de hardware
- DTrace : un completo marco de rastreo dinámico para la resolución de problemas del kernel y de las aplicaciones en sistemas de producción en tiempo real, implementado en Solaris , macOS , FreeBSD y muchas otras plataformas y productos.
- Extensiones de administración de Java (JMX) : tecnología Java para administrar y supervisar aplicaciones, objetos del sistema, dispositivos (como impresoras) y redes orientadas a servicios.
- Medición de la respuesta de la aplicación : API de instrumentación estandarizada para C y Java .
- Recompilación dinámica : una característica de algunos emuladores y máquinas virtuales en la que el sistema puede recompilar alguna parte de un programa durante su ejecución.
Referencias
- ↑ A. Sabetta y H. Koziolek, “Medición de métricas de rendimiento: técnicas y herramientas”, en Métricas de confiabilidad. Springer, 2008, págs. 226–232.
- ↑ "Comentarios, pruebas e instrumentación de código" . Dr. Dobb's . 3 de enero de 2011. Consultado el 29 de enero de 2014 .
- ↑ Descripción general de la instrumentación del código fuente en el sitio web de IBM
- ↑ Reichelt, DG, Bulej, L., Jung, R., & van Hoorn, A. (2024, mayo). Comparación de sobrecarga de marcos de instrumentación. En Companion of the 15th ACM/SPEC International Conference on Performance Engineering (pp. 249-256).
- Introducción a la instrumentación y el rastreo: Red de desarrolladores de Microsoft
- Herramientas para desarrolladores de Apple: Introducción a Instruments
- SystemTap proporciona una infraestructura de software libre (GPL) para simplificar la recopilación de información sobre el sistema Linux en ejecución.
- cwrap Envuelve automáticamente las funciones de C y C++ con instrumentación.
- Optimización de software
- Administración del sistema
- Sistemas de gestión
- Depuración
- esbozos de informática