OProfile es una herramienta de supervisión de rendimiento que se ejecuta a lo largo de todo el sistema. Utiliza el hardware de supervisión de rendimiento en el procesador para recuperar información sobre el kernel y los ejecutables en el sistema, tal como cuando la memoria es referenciada, el número de peticiones caché L2 y el número de interrupciones de hardware recibidas. En un sistema Red Hat Enterprise Linux, el paquete RPM oprofile debe estar instalado para poder utilizar esta herramienta.
Muchos procesadores incluyen hardware dedicado a la supervisión. Este hardware hace posible detectar la ocurrencia de ciertos eventos (tales como que los datos solicitados no estén en caché). El harware normalmente toma la forma de uno o más contadores que son incrementados cada vez que ocurre un evento. Cuando el valor del contador llega al "máximo," se genera una interrupción, haciendo posible controlar la cantidad de detalles (y por tanto, la sobrecarga) producida por la supervisión del rendimiento.
OProfile utiliza este hardware (o un substituto basado en temporizadores en casos donde no está presente el hardware de supervisión) para reunir muestras de datos relacionados al rendimiento cada vez que un contador genera una interrupción. Estas muestras son escritas periódicamente al disco; luego los datos contenidos en estas muestras pueden ser usados para generar informes de rendimiento a nivel del sistema y de las aplicaciones.
![]() | Importante |
---|---|
El soporte del kernel para Oprofile en Red Hat Enterprise Linux 3 esta basado en el código que permite el uso de versiones previas del kernel de desarrollo 2.5. Cuando se refiere a la documentación de Oprofile, las características particulares de 2.5 se aplican a Oprofile en Red Hat Enterprise Linux 3, aún cuando la versión del kernel sea 2.4. De la misma manera, las características de Oprofile específicas al kernel 2.4 no se aplican a Red Hat Enterprise Linux 3. |
Oprofile es una herramienta útil, pero tenga en cuenta ciertas limitaciones cuando lo esté utilizando:
Uso de bibliotecas compartidas — Las muestras de código en las bibliotecas compartidas no son atribuídos a una aplicación particular a menos que se utilice la opción --separate=library.
Las muestras de supervisión de rendimiento son inexactas — Cuando un registro de supervisión de rendimiento lanza una muestra, el manejo de la interrupción no es preciso como una excepción de división por cero. Debido a la ejecución de instrucciones fuera de orden por el procesador, la muestra puede que se grabe en una instrucción cercana.
oprofpp no asocia adecuadamente las muestras para las funciones incorporadas o 'inline' — oprofpp utiliza un mecanismo de intervalo de direcciones simple para determinar en cuál función se encuentra una dirección. Las muestras de funciones incorporadas no son atribuídas a la función incorporadas pero a la función en la que fue insertada la función incorporada.
OProfile acumula datos desde múltiples ejecuciones — Oprofile es un perfilador extendido a todo el sistema y que espera que los procesos se inicien y terminen en tiempos diferentes. Por tanto, se acumulan muestras de múltiples ejecuciones. Utilice el comando opcontrol --reset para limpiar las muestras de ejecuciones anteriores.
Problemas de rendimiento no limitados al CPU — OProfile está orientado a encontrar problemas con procesos limitados al CPU. Oprofile no identifica procesos que estén dormidos porque estos estan esperando por bloqueos o porque ocurra algún otro evento (por ejemplo, que un dispositivo de E/S termine una operación).
En Red Hat Enterprise Linux, sólo los kernels con múltiples procesadores (SMP) tienen el soporte de Oprofile activado. Para determinar cuál kernel se está ejecutando, ejecute el comando siguiente:
uname -r |
Si la versión del kernel devuelve extensiones que terminan en .entsmp, el kernel multiprocesador no se está ejecutando. Si no lo está, instálelo a través de Red Hat Network o desde los CDs de la distribución, aún si el sistema no es un sistema con múltiples procesadores. El kernel multiprocesador puede ejecutarse en un sistema uniprocesador.
La Tabla 43-1 proporciona una breve descripción de las herramientas suministradas con el paquete oprofile.
Comando | Descripción |
---|---|
opcontrol | Configura qué datos son reunidos. Consulte la Sección 43.2 para más detalles. |
op_help | Muestra los eventos disponibles para el procesador del sistema junto con una breve descripción para cada uno. |
op_merge | Combina múltiples muestras desde el mismo ejecutable. Consulte la Sección 43.5.4 para más detalles. |
op_time | Proporciona una descripción general de todos los ejecutables perfilados. Vaya a la Sección 43.5.1 para más detalles. |
op_to_source | Crea un código fuente con notas para un ejecutable si la aplicación fue compilada con símbolos de depuración. Consulte la Sección 43.5.3 para más detalles. |
oprofiled | Se ejecuta como un demonio para escribir periódicamente datos de muestra al disco. |
oprofpp | Recupera datos del perfil. Vea la Sección 43.5.2 para más detalles. |
op_import | Convierte archivos de la base de datos de muestras de un formato binario extraño al formato nativo para el sistema. Solamente utilice esta opción cuando esté analizando una base de datos de muestras desde una arquitectura diferente. |
Tabla 43-1. Comandos OProfile