Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
39 o profile
1. 561
OProfile
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 (tal como que los datos solicitados no estén en caché).
El harware normalmente toma la forma de uno o más contadores que se incrementan 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.
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.
• opreport does not associate samples for inline functions' properly — opreport uses a simple
address range mechanism to determine which function an address is in. Inline function samples are
not attributed to the inline function but rather to the function the inline function was inserted into.
• OProfile acumula datos desde múltiples ejecuciones — Oprofile es un perfilador extendido a todo
el sistema y que espera que los procesosse 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).
39.1. Descripción general de las herramientas
Tabla 39.1, “Comandos OProfile” provides a brief overview of the tools provided with the oprofile
package.
2. 562
Configurar los eventos a supervisar
Comando Descripción
ophelp Displays available events for the system's processor along with a brief
description of each.
opimport 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.
opannotate Creates annotated source for an executable if the application was
compiled with debugging symbols. Refer to Sección 39.5.4, “Utilizando
opannotate” for details.
opcontrol Configures what data is collected. Refer to Sección 39.2,
“Configuración de Oprofile” for details.
opreport Retrieves profile data. Refer to Sección 39.5.1, “Utilizando opreport”
for details.
oprofiled Se ejecuta como un demonio para escribir periódicamente datos de
muestra al disco.
Tabla 39.1. Comandos OProfile
39.2. Configuración de Oprofile
Antes de que pueda ejecutar Oprofile, debe configurarlo. Como mínimo, se requiereseleccionar
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.
39.2.1. Especificar el Kernel
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 --setup --vm linux=/usr/lib/debug/lib/m odules/`uname -r`/vm linux
Nota
El paquete debuginfo (el cual contiene el kernel sin comprimir) debe ser instalado
para poder monitorear el kernel.
Para configurar Oprofile para que no controle el kernel, ejecute el comando siguiente como root:
opcontrol --setup --no-vmlinux
3. 563
Configurar los eventos a supervisar
This command also loads the oprofile kernel module, if it is not already loaded, and creates the /
dev/oprofile/ directory, if it does not already exist. Refer to Sección 39.6, “Comprender /dev/
oprofile/” for details about this directory.
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.
Setting whether samples should be collected within the kernel only changes what data is collected,
not how or where the collected data is stored. To generate different sample files for the kernel and
application libraries, refer to Sección 39.2.3, “Separar perfiles del Kernel y del espacio del usuario”.
39.2.2. Configurar los eventos a supervisar
Most processors contain counters, which are used by OProfile to monitor specific events. As shown
in Tabla 39.2, “Procesadores y contadores de Oprofile”, the number of counters available depends on
the processor.
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 y pSeries timer 1
ppc64/power4 8
ppc64/power5 6
ppc64/970 8
IBM eServer S/390 y S/390x timer 1
IBM eServer zSeries timer 1
Tabla 39.2. Procesadores y contadores de Oprofile
Use Tabla 39.2, “Procesadores y contadores de Oprofile” to verify that the correct processor type was
detected and to determine the number of events that can be monitored simultaneously. timer is used
as the processor type if the processor does not have supported performance monitoring hardware.
Si se utiliza timer, los eventos no se puedenconfigurar 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.
4. 564
Configurar los eventos a supervisar
If timer is not used as the processor type, the events monitoredcan be changed, and counter 0
for the processor is set to a time-based event by default. If more than one counter exists on the
processor, the counters other than counter 0 are not set to an event by default. The default events
monitored are shown in Tabla 39.3, “Eventos predeterminados”.
Procesador Evento Predeterminado para
el Contador
Descripción
Pentium Pro, Pentium
II, Pentium III, Athlon,
AMD64
Pentium 4 (HT y no-
HT)
CPU_CLK_UNHALTED The processor's clock is not halted
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
ppc64/power4 CICLOS Ciclos del Procesador
ppc64/power5 CICLOS Ciclos del Procesador
ppc64/970 CICLOS Ciclos del Procesador
Tabla 39.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:
ls -d /dev/oprofile/ [0-9]*
The events available vary depending on the processor type. To determine the events available for
profiling, execute the following command as root (the list is specific to the system's processor type):
ophelp
The events for each counter can be configured via the command line or with a graphical interface.
For more information on the graphical interface, refer to Sección 39.8, “Interfaz gráfica”. If the counter
cannot be set to a specific event, an error message is displayed.
Para configurar el evento para cada contador configurable a través de la línea de comandos, utilice
opcontrol:
opcontrol --event=<event-name>:<sample-rate>
Replace <event-name> with the exact name of the event from ophelp, and replace <sample-
rate> with the number of events between samples.
5. 565
Separar perfiles del Kernel y del espacio del usuario
39.2.2.1. Velocidad de muestreo
Por defecto, se selecciona un evento basado en tiempo. Esto crea aproximadamente 100,000
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 el usuario no la puede
configurar. 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 --event=<event-name>:<sample-rate>
Replace <sample-rate> with the number of events to wait before sampling again. The smaller the
count, the more frequent the samples. For events that do not happen frequently, a lower count may be
needed to capture the event instances.
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.
39.2.2.2. Máscaras de unidades
Algunos eventos de monitoriamiento del desempeño pueden necesitar máscaras de unidades para
definir aún más el evento.
Las máscaras de unidades para cada evento son enumeradas con el comando ophelp. 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 --event=<event-name>:<sample-rate>:<unit-mask>
39.2.3. Separar perfiles del Kernel y del espacio del usuario
Por defecto, se reune información del modo del kernel y del modo del usuario por cada evento. Para
configurar Oprofile para que ignore los eventos en modo del kernel para un contador en particular,
ejecute el siguiente comando:
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:0
Ejecute el comando siguiente para comenzar a perfilar otra vez en modo kernel para el contador:
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:1
Para configurar Oprofile para que ignore eventos en modo usuario para un contador específico,
ejecute el siguiente comando:
6. 566
Separar perfiles del Kernel y del espacio del usuario
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:<kernel>:0
Ejecute el comando siguiente para comenzar a perfilar nuevamente en modo usuario para el
contador:
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:<kernel>: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> can be one of the following:
• 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.
Nota
Estos cambios en la configuración tendrán lugar cuandose reinicie oprofile.
39.3. Iniciar y detener Oprofile
Para comenzar a supervisar el sistema con Oprofile, ejecute el comando siguiente como root:
opcontrol --start
Se muestra una salida similar a la siguiente:
Using log file /var/lib/oprofile/oprofiled.log Daemon started. Profiler running.
Se utilizan las configuraciones en /root/.oprofile/daemonrc.
El demonio Oprofile, oprofiled, es iniciado; este escribe periódicamente los datos de muestra al
directorio /var/lib/oprofile/samples/. El archivo de registro para el demonio está ubicado en
/var/lib/oprofile/oprofiled.log.
Para detener el perfilador, ejecute el siguiente comando como root:
7. 567
Guardar los datos
opcontrol --shutdown
39.4. Guardar los datos
Algunas veces es útil guardar las muestras a una hora específica. Por ejemplo, cuando se esté
perfilando un ejecutable, puede ser útil reunir muestras diferentes basadas en diferentes conjuntos de
datos de entrada. Si el número de eventos a monitorear excede el número de contadores disponibles
para el procesador, se puede ejecutar varias veces Oprofile para reunir los datos, guardando los
datos de muestra a archivos diferentes cada vez.
To save the current set of sample files, execute the following command, replacing <name> with a
unique descriptive name for the current session.
opcontrol --save=<name>
Se crea el directorio /var/lib/oprofile/samples/name/ y los archivos de muestras actuales
son copiados a él.
39.5. Análisis de los datos
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 siguiente comando como root:
opcontrol --dump
Cada archivo de muestra se basa en el nombre del ejecutable. Por ejemplo, las muestras para el
evento predeterminado en un procesador Pentium III para /bin/bash se convierte en:
{root}/bin/bash/{dep}/{root}/bin/bash/CPU_CLK_UNHALTED.100000
Las herramientas siguientes están disponibles para perfilar los datos de muestra una vez que se han
reunido:
• opreport
• opannotate
Utilice estas herramientas, junto con los binarios perfilados para generar informes que pueden ser
analizados más aún.
Aviso
The executable being profiled must be used with these tools to analyze the data. If
it must change after the data is collected, backup the executable used to create the
samples as well as the sample files. Please note that the sample file and the binary
have to agree. Making a backup isn't going to work if they do not match. oparchive
can be used to address this problem.
8. 568
Guardar los datos
Samples for each executable are written to a single sample file. Samples from each dynamically linked
library are also written to a single sample file. While OProfile is running, if the executable being
monitored changes and a sample file for the executable exists, the existing sample file is automatically
deleted. Thus, if the existing sample file is needed, it must be backed up, along with the executable
used to create it before replacing the executable with a new version. The oprofile analysis tools use
the executable file that created the samples during analysis. If the executable changes the analysis
tools will be unable to analyze the associated samples. Refer to Sección 39.4, “Guardar los datos” for
details on how to backup the sample file.
39.5.1. Utilizando opreport
La herramienta opreport proporciona una descripción general de todos los ejecutables que se están
perfilando.
Lo siguiente forma parte de una salida de ejemplo:
Profiling through timer interrupt
TIMER:0|
samples| %|
------------------
25926 97.5212 no-vmlinux
359 1.3504 pi
65 0.2445 Xorg
62 0.2332 libvte.so.4.4.0
56 0.2106 libc-2.3.4.so
34 0.1279 libglib-2.0.so.0.400.7
19 0.0715 libXft.so.2.1.2
17 0.0639 bash
8 0.0301 ld-2.3.4.so
8 0.0301 libgdk-x11-2.0.so.0.400.13
6 0.0226 libgobject-2.0.so.0.400.7
5 0.0188 oprofile d
4 0.0150 libpthread-2.3.4.so
4 0.0150 libgtk-x11-2.0.so.0.400.13
3 0.0113 libXre nder.so.1.2.2
3 0.0113 du
1 0.0038 libcrypto.so.0.9.7a
1 0.0038 libpa m.so.0.77
1 0.0038 libtermca p.so.2.0.8
1 0.0038 libX11.so.6.2
1 0.0038 libgthrea d-2.0.so.0.400.7
1 0.0038 libwnc k-1.so.4.9.0
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 es el nombre del ejecutable.
Consulte la página man de opreport para ver una lista de las opciones de línea de comandos
disponibles, tales como la opción -r utilizada para ordenar la salida desde el ejecutable con el que
tiene menos muestras hasta el que tiene el mayor número.
39.5.2. Utilizando opreport en un Ejecutable Unico
Para recuperar más información detallada sobre un ejecutable en particular utilice opreport:
9. 569
Utilizando opreport en un Ejecutable Unico
opreport <mode> <executable>
<executable> must be the full path to the executable to be analyzed. <mode> must be one of the
following:
-l
List sample data by symbols. For example, the following is part of the output from running the
command opreport -l /lib/tls/libc-<version>.so:
samples % symbol name
12 21.4286 gconv_transform_utf8_interna l
5 8.9286 _int_malloc
4 7.1429 malloc
3 5.3571 i686.get_pc _thunk.bx
3 5.3571 _dl_mcount_wrapper_check
3 5.3571 mbrto wc
3 5.3571 memcpy
2 3.5714 _int_realloc
2 3.5714 _nl_inte rn_loca le _data
2 3.5714 free
2 3.5714 strcmp
1 1.7857 ctype_get _m b_c ur_max
1 1.7857 unre gister_atfork
1 1.7857 write _nocancel
1 1.7857 _dl_addr
1 1.7857 _int_fre e
1 1.7857 _itoa_word
1 1.7857 calc _ec losure _ite r
1 1.7857 fopen@@GLIBC_2.1
1 1.7857 ge tpid
1 1.7857 memmove
1 1.7857 msort_with_tmp
1 1.7857 strc py
1 1.7857 strlen
1 1.7857 vfprintf
1 1.7857 write
La primera columna es el número de muestras para el símbolo, la segunda columna es el
porcentaje de muestras para este símbolo con relación a las muestras en general para el
ejecutable y la tercera 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.
-i <symbol-name>
List sample data specific to a symbol name. For example, the following output is from the
command opreport -l -i gconv_transform_utf8_internal /lib/tls/
libc-<version>.so:
samples % symbol name
12 100.000 gc onv_tra nsform_utf8_internal
La primera línea es un resúmen para la combinación símbolo/ejecutable.
10. 570
Utilizando opreport en un Ejecutable Unico
La primera columna es el número de muestras para el símbolo de memoria. La segunda columna
es el número el porcentaje de muestras para la dirección de memoria relativa al número total de
muestras para el símbolo. La tercera columna es el nombre del símbolo.
-d
List sample data by symbols with more detail than -l. For example, the following output is from
the command opreport -l -d gconv_transform_utf8_internal /lib/tls/
libc-<version>.so:
vma samples % symbol name
00a98640 12 100.000 gc onv_tra nsform_utf8_internal
00a98640 1 8.3333
00a9868c 2 16.6667
00a9869a 1 8.3333
00a986c1 1 8.3333
00a98720 1 8.3333
00a98749 1 8.3333
00a98753 1 8.3333
00a98789 1 8.3333
00a98864 1 8.3333
00a98869 1 8.3333
00a98b08 1 8.3333
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.
-x<symbol-name>
Excluye la lista de símbolos separada por comas de la salida.
session:<name>
Especifica la ruta completa a la sesión o un directorio relativo al directorio /var/lib/
oprofile/samples/.
39.5.3. Obtener salidas más detalladas sobre los módulos
OProfile recopila datos a nivel del sistema para código de espacio de usuario y de kernel que se
ejecuta en la máquina. Sin embargo, una vez que se carga un módulo en el kernel, la información
sobre el origen del módulo del kernel se pierde. Elo módulo puedo haber provenido del archivo
initrd durante el arranque, el directorio con varios módulos de kernel o un módulo de kernel creado
localmente. Por consiguiente, cuando OProfile graba muestras para un módulo sólamente enumera
las muestras para los módulos para un ejecutable el el directorio root, pero no es muy probable que
sea el lugar con el código real para el módulo. Necesitará seguir ciertos pasos para asegurarse de
que las herramientas de análisis obtengan el ejecutable.
For example on an AMD64 machine the sampling is set up to record "Data cache accesses" and "Data
cache misses" and assuming you would like to see the data for the ext3 module:
$ opreport /ext3
CPU: AMD64 processors, spee d 797.948 MHz (estima te d)
Co unt ed DAT A_CAC HE_ ACCE SSE S eve nts (Da ta cache accesses) with a unit mask of 0x00 (No unit
mask) count 500000
Co unt ed DAT A_ CACHE _ M ISSE S events (Data cache misses) with a unit mask of 0x00 (No unit mask)
count 500000
11. 571
Utilizando opannotate
DATA_CACHE_ACC...|DATA_CACHE_MIS...|
samples| %| samples| %|
------------------------------------
148721 100.000 1493 100.000 ext3
Para obtener una vista más detallada de las acciones del módulo necesitará tener el módulo montado
(por ejemplo, instalado desde una cosntrcción personalizada) o tener el RPM debuginfo instalado
para el kernel.
Find out which kernel is running, "uname -a", get the appropriate debuginfo rpm, and install on the
machine.
Then make a symbolic link so oprofile finds the code for the module in the correct place:
# ln -s /lib/modules/`unam e -r`/kernel/fs/ext3/ext3.ko /ext3
Then the detailed information can be obtained with:
# opreport im age:/ext3 -l|m ore
warning: c ould not chec k tha t the binary file /ext3 has not been modified since the profile
was take n. Results may be inaccurate.
CPU: AMD64 processors, spee d 797.948 MHz (estima te d)
Co unt ed DAT A_CAC HE_ ACCE SSE S eve nts (Da ta cache accesses) with a unit mask of 0x00 (No unit
mask) count 500000
Co unt ed DAT A_ CACHE _ M ISSE S events (Data cache misses) with a unit mask of 0x00 (No unit mask)
count 500000
samples % samples % symbol name
16728 11.2479 7 0.4689 ext3_group_sparse
16454 11.0637 4 0.2679 ext3_count_free_blocks
14583 9.8056 51 3.4159 e xt3_fill_supe r
8281 5.5681 129 8.6403 ext3_ioctl
7810 5.2514 62 4.1527 ext3_write _info
7286 4.8991 67 4.4876 ext3_ordered_writepage
6509 4.3767 130 8.7073 ext3_new_inode
6378 4.2886 156 10.4488 ext3_new_block
5932 3.9887 87 5.8272 e xt3_xa ttr_bloc k_list
...
39.5.4. Utilizando opannotate
La herramienta opannotate trata de poner juntas las muestras para instrucciones particulares con
sus líneas correspondientes en el código fuente. Los archivos que resultan 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.
For this utility to work, the executable must be compiled with GCC's -g option. By default, Red Hat
Enterprise Linux packages are not compiled with this option.
La sintaxis general para opannotate es la siguiente:
opannotate --search-dirs <sr c-dir> --source <executable>
Se debe especificar el directorio que contiene el código fuente y el ejecutable a analizar. Consulte la
página del manual de opannotate para obtener una lista con las opciones de línea de comandos
adicionales.
12. 572
Utilizando opannotate
39.6. Comprender /dev/oprofile/
El directorio /dev/oprofile/ contiene los archivos para Oprofile. Utilice el comando cat para
mostrar los valores de los archivos virtuales en este sistema de archivos. Por ejemplo, el comando
siguiente muestra el tipo de procesador que Oprofile detectó:
cat /dev/oprofile/cpu_type
Existe un directorio en /dev/oprofile/ para cada contador. Por ejemplo, si hay dos contadores,
existen los directorios /dev/oprofile/0/ y dev/oprofile/1/.
Cada directorio de contadores contiene los archivos siguientes:
• count — El intervalo entre las muestras.
• enabled — Si es 0, el contador está desactivado y no se reúnenmuestras para este; si es 1, el
contador está activado y se están recogiendo las muestras.
• event — El evento a supervisar
• kernel — Si es 0, las muestras no son reunidas para este contador de eventos cuando el
procesador está en el espacio del kernel; si es 1, las muestras son reunidas aún si el procesador
está en el espacio del kernel.
• unit_mask — Define cuáles máscaras de unidades son activadas para el contador.
• user — Si es 0, las muestras no son reunidas para el contador cuando el procesador está en el
espacio del usuario; si es 1, las muestras son reunidas aún si el procesador está en el espacio del
usuario
Los valores de estos archivos se pueden obtener con el comando cat. Por ejemplo:
cat /dev/oprofile/0/count
39.7. Ejemplo de uso
Mientras que Oprofile puede ser usado por desarrolladores para analizar el rendimiento de una
aplicación, también puede ser usado por los administradores de sistemas para analizar el rendimiento
del sistema. Por ejemplo:
• Determina cuáles aplicaciones y servicios son los más usados en un sistema — opreport se
puede usar para determinar cuánto tiempo de procesador utiliza una aplicación o servicio. Si el
sistema es usado para múltiples servicios pero no está rindiendo bien, los servicios que consuman
más tiempo de procesamiento se pueden mover a sistemas dedicados.
• Determinar el uso del procesador — El evento CPU_CLK_UNHALTED se puede monitorear para
determinar la carga del procesador durante un tiempo determinado. Estos datos luego se pueden
usar para determinar si la implementación de procesadores adicionales o más rápidos pueden
mejorar el rendimiento del sistema.
13. 573
Interfaz gráfica
39.8. Interfaz gráfica
Algunas preferencias de Oprofile se puedenconfigurar con una interfaz gráfica. Para iniciarla, ejecute
el comando oprof_start como root en el indicador de comandos. Para utilizar la interfaz gráfica
necesitará tener instalado el paquete oprofile-gui.
Después de cambiar cualquiera de las opciones, las puede guardar pulsando el botón Guardar y
salir. Las preferencias son escritas al /root/.oprofile/daemonrc y la aplicación termina. Al salir
de la aplicación no detiene a Oprofile de seguir tomando muestras.
On the Setup tab, to set events for the processor counters as discussed in Sección 39.2.2,
“Configurar los eventos a supervisar”, select the counter from the pulldown menu and select the
event from the list. A brief description of the event appears in the text box below the list. Only events
available for the specific counter and the specific architecture are displayed. The interface also
displays whether the profiler is running and some brief statistics about it.
Figura 39.1. Disposición de Oprofile
On the right side of the tab, select the Profile kernel option to count events in kernel mode for the
currently selected event, as discussed in Sección 39.2.3, “Separar perfiles del Kernel y del espacio del
usuario”. If this option is unselected, no samples are collected for the kernel.
14. 574
Interfaz gráfica
Select the Profile user binaries option to count events in user mode for the currently selected event,
as discussed in Sección 39.2.3, “Separar perfiles del Kernel y del espacio del usuario”. If this option is
unselected, no samples are collected for user applications.
Use the Count text field to set the sampling rate for the currently selected event as discussed in
Sección 39.2.2.1, “Velocidad de muestreo”.
If any unit masks are available for the currently selected event, as discussed in Sección 39.2.2.2,
“Máscaras de unidades”, they are displayed in the Unit Masks area on the right side of the Setup tab.
Select the checkbox beside the unit mask to enable it for the event.
En la pestaña Configuración, para perfilar el kernel, ingrese el nombre y ubicación del archivo
vmlinux del kernel para supervisar en el campo de texto Archivo de imagen del kernel. Para
configurar Oprofile para que no supervise el kernel, seleccione No kernel image.
Figura 39.2. OProfile Configuration
Si la opción Verbose está seleccionada, el demonio de registro de oprofiled incluye más
información.
If Per-application kernel samples files is selected, OProfile generates per-application profiles for
the kernel and kernel modules as discussed in Sección 39.2.3, “Separar perfiles del Kernel y del
espacio del usuario”. This is equivalent to the opcontrol --separate=kernel command. If Per-
application shared libs samples files is selected, OProfile generates per-application profiles for
libraries. This is equivalent to the opcontrol --separate=library command.
To force data to be written to samples files as discussed in Sección 39.5, “Análisis de los datos”, click
the Flush profiler data button. This is equivalent to the opcontrol --dump command.
Para iniciar Oprofile desde la interfaz gráfica, pulse en Iniciar perfilador. Para detener el perfilador,
pulse en Detener perfilador. Al salir de la aplicación no se detiene Oprofile de continuar tomando
muestras.
15. 575
Interfaz gráfica
39.9. Recursos adicionales
Este capítulo solamente resalta Oprofile y cómo configurarlo y utilizarlo. Para aprender un
poco más, consulte los recursos siguientes.
39.9.1. Documentos instalados
• /usr/share/doc/oprofile-<version>/oprofile.html — OProfile Manual
• oprofile man page — Discusses opcontrol, opreport, opannotate,y ophelp
39.9.2. Sitios Web útiles
• http://oprofile.sourceforge.net/ — contiene la última documentación, listas de correo,
canales IRC y mucho más.