Red Hat Enterprise Linux 3: Manual de administración del sistema | ||
---|---|---|
Anterior | Capítulo 43. OProfile | Siguiente |
Periódicamente, el demonio Oprofile, oprofiled colecciona las muestras y las escribe al directorio /var/lib/oprofile/samples/. Antes de leer los datos, asegúrese de que todos los datos han sido escritos a este directorio ejecutando el comando siguiente como root:
opcontrol --dump |
Cada nombre de archivo de muestra está basado en el nombre del ejecutable, con una llave de cierre (}) reemplazando cada barra oblicua (/). El nombre del archivo termina con una marca de almohadilla o numeral (#), seguido por el número del contador usado para ese archivo de muestra. Por ejemplo, el archivo siguiente incluye los datos de muestra para el ejecutable /sbin/syslogd reunido con el contador 0:
}sbin}syslogd#0 |
Las herramientas siguientes están disponibles para perfilar los datos de muestra una vez que se han reunido:
op_time
oprofpp
op_to_source
op_merge
Utilice estas herramientas, junto con los binarios perfilados para generar informes que pueden ser analizados más aún.
![]() | Aviso |
---|---|
El ejecutable que está siendo perfilado se debe usar con estas herramientas para analizar los datos. Si se debe cambiar luego de que los datos son recogidos, haga una copia de seguridad del ejecutable usado para crear las muestras así como también los archivos de muestra. |
Las muestras para cada ejecutable son escritas a un archivo de muestras único. Las muestras de cada biblioteca de enlace dinámica también son escritas a un archivo de muestras único. Mientras que Oprofile se esté ejecutando, si el ejecutable que está siendo supervisado cambia y existe un archivo de muestras para este ejecutable, el archivo existente es borrado automáticamente. Por tanto, si se necesita el archivo existente, este se debe respaldar, junto con el ejecutable que se utilizó para crearlo antes de reemplazarlo con una nueva versión. Consulte la Sección 43.4 para más detalles sobre cómo respaldar un archivo de ejemplo.
La herramienta op_time proporciona una descripción general de todos los ejecutables que están siendo perfilados.
Lo siguiente forma parte de una salida de ejemplo:
581 0.2949 0.0000 /usr/bin/oprofiled 966 0.4904 0.0000 /usr/sbin/cupsd 1028 0.5218 0.0000 /usr/sbin/irqbalance 1187 0.6026 0.0000 /bin/bash 1480 0.7513 0.0000 /usr/bin/slocate 2039 1.0351 0.0000 /usr/lib/rpm/rpmq 6249 3.1722 0.0000 /usr/X11R6/bin/XFree86 8842 4.4885 0.0000 /bin/sed 31342 15.9103 0.0000 /usr/bin/gdmgreeter 58283 29.5865 0.0000 /no-vmlinux 82853 42.0591 0.0000 /usr/bin/perl |
Cada ejecutable es listado en su propia línea. La primera columna es el número de muestras registradas para el ejecutable. La segunda columna es el porcentaje de muestras relativo al número total de muestras. La tercera columna no se utiliza y la cuarta columna es el nombre del ejecutable.
Consulte la página man de op_time para ver una lista de las opciones de línea de comandos disponibles, tales como la opción -r, usada para ordenar la salida desde el ejecutable con mayor número de muestras hasta el que tiene menos muestras. La opción -c también es útil para especificar un número de contador.
Para recuperar más información detallada sobre un ejecutable en particular, utilice oprofpp:
oprofpp <mode> <executable> |
<executable> debe ser la ruta completa al ejecutable a analizar. <mode> debe ser uno de los siguientes:
Lista los datos de muestra por símbolos. Por ejemplo, lo siguiente es parte de la salida desde el comando oprofpp -l /usr/X11R6/bin/XFree86:
vma samples % symbol name ... 08195d10 4 3.0303 miComputeCompositeClip 080b9180 5 3.78788 Dispatch 080cdce0 5 3.78788 FreeResource 080ce4a0 5 3.78788 LegalNewID 080ce640 5 3.78788 SecurityLookupIDByClass 080dd470 9 6.81818 WaitForSomething 080e1360 12 9.09091 StandardReadRequestFromClient ... |
La primera columna es la dirección de memoria virtual de comienzo (vma). La segunda columna es el número de muestras para el símbolo. La tercera columna es el porcentaje de muestras para este símbolo relativas a las muestras totales para un ejecutable, y la cuarta columna es el nombre del símbolo.
Para ordenar la salida desde el número más grande de muestras al más pequeño (orden inverso), utilice la opción -r en conjunto con la opción -l.
Lista datos de muestra específicos al nombre del símbolo. Por ejemplo, la salida siguiente es del comando oprofpp -s StandardReadRequestFromClient /usr/X11R6/bin/XFree86:
vma samples % symbol name 080e1360 12 100 StandardReadRequestFromClient 080e1360 1 8.33333 080e137f 1 8.33333 080e13bb 1 8.33333 080e13f4 1 8.33333 080e13fb 1 8.33333 080e144a 1 8.33333 080e15aa 1 8.33333 080e1668 1 8.33333 080e1803 1 8.33333 080e1873 1 8.33333 080e190a 2 16.6667 |
La primera línea es un resúmen para la combinación símbolo/ejecutable.
La primera columna consiste de las direcciones de memoria virtual muestreadas. La segunda columna es el número de muestras para la dirección de memoria. La tercera columna es el porcentaje de muestras para la dirección de memoria relativa al número total de muestras para el símbolo.
Lista datos de muestra por símbolos con más detalles que la opción -l. Por ejemplo:
vma samples % symbol name 08083630 2 1.51515 xf86Wakeup 08083641 1 50 080836a1 1 50 080b8150 1 0.757576 Ones 080b8179 1 100 080b8fb0 2 1.51515 FlushClientCaches 080b8fb9 1 50 080b8fba 1 50 ... |
Los datos son los mismos que con la opción -l excepto que para cada símbolo, se muestra cada dirección virtual de memoria utilizada. Para cada dirección virtual de memoria se despliegan, el número de muestras y los porcentajes de las muestras relativos al número de muestras para el símbolo.
Genera la salida a un archivo en formato gprof. Si el archivo generado es llamado gmon.out, se puede usar gprof para analizar los datos aún más. Consulte la página del manual de gprof para más detalles.
Otras opciones para restringir aún más los datos son:
Utiliza el archivo de muestras especificado <file-name>. Por defecto, se utiliza el archivo de muestras en /var/lib/oprofile/samples/. Use esta opción para especificar un archivo de muestra desde una sesión previa.
Utilice <file-name> como el nombre del ejecutable para el cual recuperar datos.
Decodificar nombres de símbolos C++
Decodifica los nombres de símbolos en C++ y simplifica las bibliotecas STL de nombres decodificados.
Reune información de un contador específico. El contador por defecto es 0 si no se especifica.
Muestra el número de línea en el código fuente para cada muestra. Cuando se compiló el ejecutable, debió utilizar la opción -g de GCC. De lo contrario, esta opción no puede mostrar los números de línea. Ninguno de los ejecutables de Red Hat Enterprise Linux son compilados con esta opción por defecto.
vma samples % symbol name linear info 0806cbb0 0 0 _start ../sysdeps/i386/elf/start.S:47 |
Excluye la lista de símbolos separada por comas de la salida.
Muestra una columna adicional conteniendo la biblioteca compartida. Esta opción solamente produce resultados si se especifica la opción --separate=library para el comando opcontrol cuando se configure Oprofile, y si no se utiliza la opción --dump-gprof-file conjuntamente con esta opción.
Despliega la salida en un orden de columnas específico. Esta opción no se puede utilizar con -g.
Use las letras siguientes para representar las columnas:
Letra | Descripción |
---|---|
v | Dirección de memoria virtual |
s | Número de muestras |
S | Número acumulativo de muestras |
p | Porcentaje de muestras relativo al número total de muestras para el ejecutable |
P | Porcentaje acumulativo de muestras relativo al número total de muestras para el ejecutable |
q | Porcentaje de muestras relativo a todos los ejecutables evaluados |
Q | Porcentaje acumulativo de las muestras relativo a todos los ejecutables evaluados |
n | Nombre del símbolo |
l | Nombre del archivo fuente y número de línea, incluyendo la ruta completa |
L | Nombre base del nombre del archivo de código fuente y número de línea |
i | Nombre del ejecutable, incluyendo la ruta completa |
I | Nombre base del ejecutable |
d | Detalles de la muestra |
h | Muestra las cabeceras de las columnas |
Tabla 43-4. Letras para el orden de las columnas
Especifica la ruta completa a la sesión o un directorio relativo al directorio /var/lib/oprofile/samples/.
Especifica una lista separada por comas de las rutas en las cuales se ubicaran los ejecutables que serán analizados.
La herramienta op_to_source trata de coincidir las muestras para instrucciones particulares a sus líneas correspondientes en el código fuente. Los archivos resultantes deberían tener las muestras para las líneas a la izquierda. También coloca un comentario al comienzo de cada función listando las muestras totales para la función.
Para que funcione esta utilidad, el ejecutable debe ser compilado con la opción -g de GCC. Por defecto, los paquetes Red Hat Enterprise Linux no son compilados con esta opción.
La sintaxis general para op_to_source es como sigue:
op_to_source --source-dir <src-dir> <executable> |
Se debe especificar el directorio que contiene el código fuente y el ejecutable a analizar. Consulte la página del manual de op_to_source para una lista con las opciones de línea de comandos adicionales.
Si existen múltiples archivos de muestras para el mismo ejecutable o biblioteca, se pueden combinar los archivos de muestra para hacer el análisis más fácil.
Por ejemplo, para combinar los archivos para la biblioteca /usr/lib/library-1.2.3.so, ejecute el comando siguiente como root:
op_merge /usr/lib/library-1.2.3.so |
El archivo resultante es /var/lib/oprofile/samples/}usr}lib}library-1.2.3.so.
Para limitar las muestras combinadas a un contador específico, utilice la opción -c seguido del número del contador.