Red Hat Enterprise Linux 3: Manual de administración del sistema | ||
---|---|---|
Anterior | Capítulo 43. OProfile | Siguiente |
Antes de que pueda ejecutar Oprofile, debe configurarlo. Como mínimo, se requiere seleccionar supervisar el kernel (o seleccionar no supervisar el kernel). Las secciones siguientes describen cómo utilizar la utilidad opcontrol para configurar Oprofile. A medida que se ejecutan los comandos opcontrol, las opciones de configuración son guardadas al archivo /root/.oprofile/daemonrc.
Primero, configure si Oprofile debería supervisar el kernel. Esta es la única opción de configuración que se requiere antes de iniciar Oprofile. Todas las otras opciones son opcionales.
Para supervisar el kernel, ejecute el comando siguiente como root:
opcontrol --vmlinux=/boot/vmlinux-`uname -r` |
Para configurar Oprofile para que no controle el kernel, ejecute el comando siguiente como root:
opcontrol --no-vmlinux |
Este comando también carga el módulo del kernel oprofile (si aún no ha sido cargado) y crea el directorio /dev/oprofile/ si aún no existe. Consulte la Sección 43.6 para más detalles sobre este directorio.
![]() | Nota |
---|---|
Aún si se configura Oprofile para que no perfile el kernel, el kernel de SMP debe estar ejecutándose para que el módulo oprofile se pueda cargar a partir de este. |
El configurar si las muestras deberían ser reunidas dentro del kernel sólo cambia los datos que son reunidos, no el cómo o dónde estos datos son almacenados. Para generar archivos de muestras diferentes para el kernel y las bibliotecas de aplicaciones, consulte la Sección 43.2.3.
La mayoría de los procesadores contienen contadores, los cuales son usados por Oprofile para supervisar eventos específicos. Como se muestra en la Tabla 43-2, el número de contadores disponibles depende del procesador.
Procesador | cpu_type | Número de contadores |
---|---|---|
Pentium Pro | i386/ppro | 2 |
Pentium II | i386/pii | 2 |
Pentium III | i386/piii | 2 |
Pentium 4 (sin hilos múltiples) | i386/p4 | 8 |
Pentium 4 (múltiples hilos o hyper-threaded) | i386/p4-ht | 4 |
Athlon | i386/athlon | 4 |
AMD64 | x86-64/hammer | 4 |
Itanium | ia64/itanium | 4 |
Itanium 2 | ia64/itanium2 | 4 |
TIMER_INT | timer | 1 |
IBM eServer iSeries | timer | 1 |
IBM eServer pSeries | timer | 1 |
IBM eServer S/390 | timer | 1 |
IBM eServer zSeries | timer | 1 |
Tabla 43-2. Procesadores y contadores de Oprofile
Utilice la Tabla 43-2 para verificar que fue detectado el tipo correcto de procesador y para determinar el número de eventos que pueden ser monitoreados simultáneamente. Se utiliza timer como el tipo de procesador si el procesador no tiene hardware de supervisión del rendimiento compatible.
Si se utiliza timer, los eventos no se pueden configurar para ningún procesador porque el hardware no tiene el soporte para el hardware de contadores de rendimiento. En su lugar, se utilizan las interrupciones del temporizador para crear perfiles.
Si no se utiliza timer como el tipo de procesador, se pueden cambiar los eventos supervisados y el contador 0 para el procesador, es configurado por defecto a un evento en base a tiempo. Si existe más de un contador en el procesador, los contadores diferentes del contador 0, no se configuran a un evento por defecto. Los eventos controlados por defecto se muestran en la Tabla 43-3.
Procesador | Evento predeterminado para el Contador 0 | Descripción |
---|---|---|
Pentium Pro, Pentium II, Pentium III, Athlon, AMD64 | CPU_CLK_UNHALTED | El reloj del procesador no está detenido |
Pentium 4 (HT y no-HT), Intel® EM64T | GLOBAL_POWER_EVENTS | El tiempo durante el cual el procesador no está detenido |
Itanium 2 | CPU_CYCLES | CPU Cycles |
TIMER_INT | (ninguno) | Muestra para cada interrupción del temporizador |
Tabla 43-3. Eventos predeterminados
El número de eventos que se pueden supervisar a la vez, es determinado por el número de contadores para el procesador. Sin embargo, no es una relación de uno a uno; en algunos procesadores, se deben mapear ciertos eventos a contadores específicos. Para determinar el número de contadores disponibles, ejecute el comando siguiente:
cat /dev/oprofile/cpu_type |
Los eventos disponibles varían dependiendo del tipo de procesador. Para determinar los eventos disponibles para el perfilamiento, ejecute el comando siguiente como root (la lista es específica al tipo de procesador):
op_help |
Se pueden configurar los eventos para cada contador a través de la línea de comandos o con una interfaz gráfica. Si el contador no se puede configurar a un evento específico, se muestra un mensaje de error.
Para configurar el evento para cada contador configurable a través de la línea de comandos, utilice opcontrol:
opcontrol --ctrlN-event=<event-name> |
Reemplace N con el número del contador (comenzando con 0) y reemplace <event-name> con el nombre exacto del evento desde op_help.
Por defecto, se selecciona un evento basado en tiempo. Esto crea aproximadamente 2000 muestras por segundo por procesador. Si se utilizan las interrupciones del temporizador, el temporizador es configurado a la velocidad instantánea que sea y no es configurable por el usuario. Si el cpu_type no es timer, cada evento puede tener una velocidad de muestreo configurada. La velocidad de muestreo es el número de eventos entre cada instantánea de muestra.
Cuando configure el evento para el contador, también se puede especificar una velocidad de muestreo:
opcontrol --ctrN-event=<event-name> --ctrN-count=<sample-rate> |
Reemplace <sample-rate> con el número de eventos a esperar antes de tomar muestras otra vez. Mientras más pequeña la cuenta, más frecuentes seran los muestreos. Para aquellos eventos que no ocurren frecuentemente, se necesita una cuenta más pequeña para capturar las instancias del evento.
![]() | Atención |
---|---|
Tenga extremo cuidado cuando configure las velocidades de muestreo. Si se toman muestras con demasiada frecuencia puede sobrecargar al sistema, causando que el sistema parezca congelado o que en verdad el sistema se congele. |
Si el cpu_type no es timer, se pueden necesitar máscaras de unidades para definir aún más el evento.
Las máscaras de unidades para cada evento son listadas con el comando op_help. Los valores para cada máscara de unidad son listados en formato hexadecimal. Para especificar más de una máscara de unidad, los valores hexadecimales deben estar combinados usando una operación de bits or.
opcontrol --ctrN-event=<event-name> --ctrN-count=<sample-rate> --ctrN-unit-mask=<value> |
Por defecto, se reune información del modo del kernel y del modo del usuario por cada evento. Para configurar Oprofile para que no cuente eventos en modo del kernel para un contador en particular, ejecute el comando siguiente (donde N es el número del contador):
opcontrol --ctrN-kernel=0 |
Ejecute el comando siguiente para comenzar a perfilar otra vez en modo kernel para el contador:
opcontrol --ctrN-kernel=1 |
Para configurar Oprofile para que no cuente eventos en modo usuario para un contador específico, ejecute el comando siguiente (donde N es el número del contador):
opcontrol --ctrN-user=0 |
Ejecute el comando siguiente para comenzar a perfilar nuevamente en modo usuario para el contador:
opcontrol --ctrN-user=1 |
Cuando el demonio Oprofile escribe datos del perfil a los archivos de muestras, puede separar los datos del perfil de kernel y de la biblioteca en archivos separados. Para configurar la forma en que el demonio escribe a los archivos de muestra, ejecute el comando siguiente como root:
opcontrol --separate=<choice> |
<choice> puede ser alguno de los siguientes:
none — no separa los perfiles (predeterminado)
library — genera perfiles por aplicación para las bibliotecas
kernel — genera perfiles por aplicación para el kernel y sus módulos
all — genera perfiles por aplicación para las bibliotecas y perfiles por aplicación para el kernel y los módulos del kernel
Si se utiliza --separate=library, el nombre del archivo de muestras incluye el nombre del ejecutable así como también el nombre de la biblioteca.