View
487
Download
1
Category
Preview:
Citation preview
561
OProfile OProfile es una herramienta de supervis ión de rendimiento que se ejecuta a lo largo de todo el
s istema. Utiliza el hardw are de supervis ión de rendimiento en el proc esador para rec uperar
informac ión sobre el kernel y los ejec utables en el s istema, tal como cuando la memoria es
referenc iada, el número de petic iones c aché L2 y el número de interrupc iones de hardw are rec ibidas.
En un sistema Red Hat Enterprise Linux, el paquete RPM oprofile debe estar instalado para poder
utilizar es ta herramienta.
Muchos proc esadores incluyen hardw are dedicado a la supervis ión. Este hardw are hac e pos ible
detec tar la ocurrenc ia de ciertos eventos (tal como que los datos solic itados no estén en cac hé).
El harw are normalmente toma la forma de uno o más contadores que se inc rementan cada vez
que ocurre un evento. Cuando el valor del contador llega al "máximo," se genera una interrupción,
hac iendo posible controlar la cantidad de detalles (y por tanto, la sobrecarga) produc ida por la
supervis ión del rendimiento.
OProfile utiliza es te hardw are (o un substituto basado en temporizadores en c asos donde no está
presente el hardw are de supervis ión) para reunir muestras de datos relac ionados al rendimiento
cada vez que un contador genera una interrupc ión. Estas muestras son escritas periódic amente al
disco; luego los datos contenidos en estas muestras pueden ser usados para generar informes de
rendimiento a nivel del s istema y de las aplic ac iones.
Oprofile es una herramienta útil, pero tenga en cuenta c iertas limitac iones cuando lo esté utilizando:
• Uso de bibliotecas compartidas — Las muestras de código en las bibliotecas c ompartidas no son
atr ibuídos a una aplicac ió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 supervis ión
de rendimiento lanza una mues tra, el manejo de la interrupción no es prec iso como una exc epc ión
de división por cero. Debido a la ejecuc ión de ins trucc iones fuera de orden por el procesador, la
muestra puede que se grabe en una instrucción c erc ana.
• opreport does not associate samples for inline functions' properly — opreport uses a simple
address range mec hanism 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 s is tema y que espera que los procesos se inicien y terminen en tiempos diferentes. Por tanto,
se ac umulan mues tras de múltiples ejecuc iones. Utilice el comando opcontrol --reset para
limpiar las muestras de ejec uc iones anteriores.
• Problemas de rendimiento no limitados al CPU — OProfile está orientado a encontrar problemas
con proc esos limitados al CPU. Oprofile no identif ica proc esos que estén dormidos porque estos
estan esperando por bloqueos o porque ocurra algún otro evento (por ejemplo, que un dispos itivo
de E/S termine una operac ió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
pac kage.
562
Configurar los eventos a supervisar
Comando Descripción
ophelp Displays available events for the system's proc essor along with a brief
description of each.
opimport Convierte archivos de la base de datos de mues tras de un formato
binario extraño al formato nativo para el sistema. Solamente utilic e
esta opción cuando esté analizando una base de datos de mues tras
desde una arquitectura diferente.
opannotate Creates annotated sourc e for an exec utable i f the application w as
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 ejec uta como un demonio para escribir periódic amente datos de
mues tra al disc o.
Tabla 39.1. Comandos OProfile
39.2. Configuración de Oprofile Antes de que pueda ejec utar Oprofile, debe configurarlo. Como mínimo, se requiere selecc ionar
supervisar el kernel (o selecc ionar no supervisar el kernel). Las secciones s iguientes describen c ómo
utilizar la utilidad opcontrol para configurar Oprofile. A medida que se ejec utan los comandos
opcontrol, las opc iones de configurac ión son guardadas al archivo /root/.oprofile/
dae monrc.
39.2.1. Especificar el Kernel
Primero, configure si Oprofile debería supervisar el kernel. Esta es la única opción de configurac ión
que se requiere antes de iniciar Oprofile. Todas las otras opciones son opc ionales.
Para supervisar el kernel, ejec ute el c omando s iguiente 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 ins talado
para poder monitorear el kernel.
Para configurar Oprofile para que no controle el kernel, ejec ute el comando s iguiente como root:
opcontrol --setup --no-vmlinux
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
es tar ejec utá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 f iles for the kernel and
applic ation 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 proc essors 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 proc essor.
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/pow er4 8
ppc64/pow er5 6
ppc 64/970 8
IBM eServer S/390 y S/390x timer 1
IBM eServer zSeries timer 1
Tabla 39.2. Proc esadores y c ontadores de Oprofile
Use Tabla 39.2, “Procesadores y contadores de Oprofile” to verify that the correct proc essor type w as
detected and to determine the number of events that can be monitored s imultaneous ly. timer is used
as the proc essor type if the proc essor does not have supported performance monitoring hardware.
Si se utiliza timer, los eventos no se pueden configurar para ningún proc esador porque el hardware
no tiene el soporte para el hardw are de contadores de rendimiento. En su lugar, se utilizan las
interrupc iones del temporizador para crear perfiles.
564
Configurar los eventos a supervisar
If timer is not used as the proc essor type, the events monitored can be changed, and counter 0
for the proc essor is set to a time-based event by default. If more than one counter exists on the
proc essor, 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 Eve nto Pre determinado para
el Contador
Descripción
Pentium Pro, Pentium
II, Pentium III, Athlon,
AMD64
Pentium 4 (HT y no-
HT)
CPU_CLK_UNHALTED The proc essor's clock is not halted
GLOBAL_POWER_EVENTS El tiempo durante el cual el proc esador
no está detenido
Itanium 2 CPU_CYCLES CPU Cyc les
TIMER_INT (ninguno) Muestra para cada interrupción del
temporizador
ppc64/pow er4 CICLOS Ciclos del Proc esador
ppc64/pow er5 CICLOS Ciclos del Proc esador
ppc 64/970 CICLOS Ciclos del Proc esador
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 proc esador. Sin embargo, no es una relación de uno a uno; en algunos
procesadores, se deben mapear ciertos eventos a contadores específ ic os. Para determinar el número
de contadores disponibles, ejecute el comando s iguiente:
ls -d /dev/oprofile/ [0-9]*
The events available vary depending on the proc essor type. To determine the events available for
profiling, exec ute the following c ommand as root (the list is specific to the system's proc essor type):
ophelp
The events for eac h c ounter can be configured via the command line or with a graphic al interfac e.
For more information on the graphic al interfac e, 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 c ontador 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 replac e <sample-
rate> with the number of events betw een samples.
565
Separar perfiles del Kernel y del espac io del usuario
39.2.2.1. Velocidad de muestreo
Por defec to, se selecc iona un evento basado en tiempo. Esto crea aproximadamente 100,000
muestras por segundo por proc esador. Si se utilizan las interrupc iones del temporizador, el
temporizador es configurado a la veloc idad ins tantánea que sea y no el usuario no la puede
configurar. Si el cpu_type no es t ime r, c ada evento puede tener una velocidad de muestreo
configurada. La veloc idad de mues treo es el número de eventos entre cada instantánea de muestra.
Cuando configure el evento para el contador, también se puede espec if ic ar una veloc idad de
muestreo:
opcontrol --event=<event-name>:<sample-rate>
Replac e <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 instanc es.
Atención
Tenga extremo cuidado c uando configure las veloc idades de muestreo. Si se toman
muestras con demasiada frecuenc ia puede sobrec argar al s is tema, c ausando que el
s istema parezc a c ongelado o que en verdad el sistema se congele.
39.2.2.2. Máscaras de unidades
Algunos eventos de monitoriamiento del desempeño pueden nec es itar másc aras 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 hexadec imal. Para espec if icar más de una
máscara de unidad, los valores hexadec imales deben estar c ombinados usando una operac ió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 defec to, 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,
ejec ute el s iguiente c omando:
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:0
Ejec ute el comando s iguiente 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 íf ic o,
ejec ute el s iguiente c omando:
566
Separar perfiles del Kernel y del espac io del usuario
opcontrol --event=<event-name>:<sample-rate>:<unit-mask>:<kernel>:0
Ejec ute el comando s iguiente 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 mues tras, 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 mues tra, ejec ute el comando s iguiente como root:
opcontrol --separate=<choice>
<choice> can be one of the following:
• none — no separa los perfiles (predeterminado)
• library — genera perfiles por aplicac ión para las bibliotec as
• kernel — genera perfiles por aplic ac ión para el kernel y sus módulos
• all — genera perfiles por aplicac ión para las bibliotecas y perfiles por aplic ació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
ejec utable así como también el nombre de la biblioteca.
Nota
Estos c ambios en la configurac ión tendrán lugar cuando se reinicie oprofile.
39.3. Iniciar y detener Oprofile Para c omenzar a supervisar el s is tema con Oprofile, ejec ute el c omando s iguiente como root:
opcontrol --start
Se mues tra una salida similar a la siguiente:
Using log file /var/lib/oprofile/oprofiled.log Daemon started. Profiler running.
Se utilizan las configurac iones en /root/.oprofile/daemonrc.
El demonio Oprofile, oprofiled, es iniciado; este escribe periódic amente los datos de muestra al
directorio /var/lib/oprofile/samples/. El archivo de registro para el demonio está ubic ado en
/var/lib/oprofile/oprofiled.log .
Para detener el perfilador, ejec ute el s iguiente comando como root:
567
Guardar los datos
opcontrol --shutdown
39.4. Guardar los datos Algunas veces es útil guardar las muestras a una hora espec íf ic a. Por ejemplo, cuando se esté
perfilando un ejec utable, puede ser útil reunir muestras diferentes basadas en diferentes conjuntos de
datos de entrada. Si el número de eventos a monitorear exc ede el número de contadores disponibles
para el proc esador, se puede ejec utar varias veces Oprofile para reunir los datos, guardando los
datos de muestra a arc hivos diferentes c ada vez.
To save the current set of sample f iles, exec ute the following command, replac ing <name> with a
unique descriptive name for the current sess ion.
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ódic amente, el demonio Oprofile, oprofiled colecc iona las mues tras y las escribe al directorio /
var/lib/oprofile/samples/. Antes de leer los datos, asegúrese de que todos los datos han s ido
escritos a este directorio ejecutando el s iguiente 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 proc esador Pentium III para /bin/bash se convierte en:
\{root\}/bin/bash/\{dep\}/\{root\}/bin/bash/CPU_CLK_UNHALTED.100000
Las herramientas s iguientes están disponibles para perfilar los datos de mues tra 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 exec utable being profiled must be used with these tools to analyze the data. If
it must change after the data is collected, bac kup the exec utable used to create the
samples as well as the sample files. Please note that the sample f ile 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.
568
Guardar los datos
Samples for eac h exec utable are written to a single sample file. Samples from each dynamically linked
library are also written to a single sample f ile. While OProfile is running, if the exec utable being
monitored c hanges and a sample f ile for the exec utable exists, the existing sample file is automatically
deleted. Thus, if the existing sample f ile is needed, it must be bac ked up, along with the executable
used to create it before replac ing the exec utable with a new version. The oprofile analys is tools use
the exec utable file that created the samples during analys is. If the exec utable c hanges the analys is
tools will be unable to analyze the assoc iated samples. Refer to Sección 39.4, “Guardar los datos” for
details on how to bac kup the sample f ile.
39.5.1. Utilizando opreport
La herramienta opreport proporc iona una descripc ión general de todos los ejec utables 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.2 44 5 Xo rg
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 ejec utable es listado en su propia línea. La primera columna es el número de mues tras
registradas para el ejecutable. La segunda columna es el porc entaje de muestras relativo al número
total de muestras. La terc era columna es el nombre del ejec utable.
Consulte la página man de opreport para ver una lista de las opc iones de línea de comandos
disponibles, tales como la opción -r utilizada para ordenar la salida desde el ejec utable con el que
tiene menos mues tras has ta el que tiene el mayor número.
39.5.2. Utilizando opreport en un Ejecuta ble Unico
Para rec uperar más información detallada sobre un ejec utable en particular utilice opreport:
569
Utilizando opreport en un Ejecutable Unico
opreport <mode> <executable>
<executable> must be the full path to the exec utable 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 % sy m bo l n ame
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 m brto 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 cty p e_ get _ m b_ c ur_ m ax 1 1.7857 unre gis ter_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 mues tras para el símbolo, la segunda columna es el
porc entaje de mues tras para este símbolo con relación a las muestras en general para e l
ejec utable 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 % sy m bo l n ame
12 100.000 gc onv_tra nsform_utf8_internal
La primera línea es un resúmen para la combinac ión símbolo/ejecutable.
570
Utilizando opreport en un Ejecutable Unico
La primera columna es el número de muestras para el símbolo de memoria. La segunda c olumna
es el número el porc entaje 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 % sy m bo l n ame
00 a9 86 4 0 1 2 100.000 gc onv_tra nsform_utf8_internal 00 a9 86 4 0 1 8.3333 00 a9 8 68 c 2 16.6667 00 a9 8 69 a 1 8.3333 00 a9 8 6 c1 1 8.3333 00 a9 87 2 0 1 8.3333 00 a9 87 4 9 1 8.3333 00 a9 87 5 3 1 8.3333 00 a9 87 8 9 1 8.3333 00 a9 88 6 4 1 8.3333 00 a9 88 6 9 1 8.3333 00 a9 8 b0 8 1 8.3333
Los datos son los mismos que con la opción -l exc epto 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 porc entajes de las mues tras relativos al número de mues tras para el
símbolo.
-x<sy mbol-name >
Excluye la lista de símbolos separada por comas de la salida.
session:<name>
Espec if ic a la ruta completa a la ses ió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 s istema para código de espac io de usuario y de kernel que se
ejec uta en la máquina. Sin embargo, una vez que se carga un módulo en el kernel, la informac ió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 cons iguiente, c uando OProfile graba muestras para un módulo sólamente enumera
las mues tras para los módulos para un ejec utable el el directorio root, pero no es muy probable que
sea el lugar con el código real para el módulo. Nec es itará seguir ciertos pasos para asegurarse de
que las herramientas de anális is obtengan el ejec utable.
For example on an AMD64 machine the sampling is set up to record "Data cache accesses" and "Data
cac he 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 un t ed DAT A_C AC HE_ AC C E S SE S eve nts (Da ta cache accesses) with a unit mask of 0x00 (No unit
mask) count 500000
Co un t ed DAT A_ C AC HE _ M I SS E S events (Data cache misses) with a unit mask of 0x00 (No unit mask)
count 500000
571
Utilizando opannotate
DATA_ CACHE_ ACC...|DATA_ CACHE_ MIS...|
samples| %| samples| %|
------------------------------------
1 4 8 72 1 10 0 .0 00 1 4 9 3 1 0 0.0 0 0 ext3
Para obtener una vista más detallada de las acc iones del módulo nec es itará tener el módulo montado
(por ejemplo, ins talado desde una cosntrcc ió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 plac e:
# 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 un t ed DAT A_C AC HE_ AC C E S SE S eve nts (Da ta cache accesses) with a unit mask of 0x00 (No unit
mask) count 500000
Co un t ed DAT A_ C AC HE _ M I SS E S events (Data cache misses) with a unit mask of 0x00 (No unit mask)
count 500000
samples % samples % sy m bo l n ame 16 7 28 11.2479 7 0.4689 ext3_group_sparse 16 4 54 11.0637 4 0.2679 ext3_count_free_blocks 14 5 83 9.8056 51 3.4159 e xt3_f ill_supe r 82 8 1 5.5681 12 9 8.6403 ext3_ioctl 78 1 0 5.2514 62 4.1527 ext3_write _info 72 8 6 4.8991 67 4.4876 ext3_ordered_writepage 65 0 9 4.3767 13 0 8.7073 ext3_new_inode 63 7 8 4.2886 15 6 10.4488 ext3_new_block 59 3 2 3.9887 87 5.8272 e xt3_xa ttr_bloc k_lis t ...
39.5.4. Utilizando opannotate
La herramienta opannotate trata de poner juntas las muestras para ins trucciones partic ulares con
sus líneas c orrespondientes 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 func ión
listando las muestras totales para la función.
For this utility to work, the exec utable must be compiled with GCC's -g option. By default, Red Hat
Enterprise Linux pac kages are not compiled with this option.
La sintaxis general para opannotate es la s iguiente:
opannotate --search-d irs <sr c-dir> - - source <execu table>
Se debe espec if ic ar 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 opc iones de línea de comandos
adic ionales.
572
Utilizando opannotate
39.6. Comprender /dev/oprofile/
El directorio /dev/oprofile/ contiene los archivos para Oprofile. Utilice el c omando cat para
mostrar los valores de los archivos virtuales en este sistema de archivos. Por ejemplo, el comando
siguiente muestra el tipo de proc esador que Oprofile detectó:
cat /dev/oprof ile/cpu_type
Existe un directorio en /dev/oprofile/ para cada c ontador. Por ejemplo, si hay dos contadores,
existen los directorios /dev/oprofile/0/ y dev/oprofile/1/.
Cada directorio de contadores c ontiene los archivos s iguientes :
• count — El intervalo entre las muestras.
• enabled — Si es 0, el contador está desactivado y no se reúnen muestras para este; si es 1, el
contador está activado y se es tán rec ogiendo las mues tras.
• event — El evento a supervisar
• kernel — Si es 0, las mues tras no son reunidas para este c ontador de eventos c uando el
proc esador está en el espac io del kernel; si es 1, las mues tras son reunidas aún si el proc esador
está en el espac io del kernel.
• unit_mask — Define cuáles másc aras de unidades son activadas para el contador.
• user — Si es 0, las muestras no son reunidas para el contador c uando el proc esador es tá en el
espac io del usuario; si es 1, las muestras son reunidas aún si el proc esador está en el espac io 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
aplicac ión, también puede ser usado por los administradores de sistemas para analizar el rendimiento
del s istema. Por ejemplo:
• Determina cuáles aplicaciones y servicios son los más usados en un sistema — opreport se
puede usar para determinar c uánto tiempo de proc esador utiliza una aplicac ión o servicio. Si el
sistema es usado para múltiples servic ios pero no está rindiendo bien, los servic ios que c onsuman
más tiempo de proc esamiento se pueden mover a sistemas dedic ados.
• Determinar el uso del procesador — El evento CPU_CLK_UNHALTED se puede monitorear para
determinar la c arga del proc esador durante un tiempo determinado. Es tos datos luego se pueden
usar para determinar si la implementac ión de proc esadores adic ionales o más rápidos pueden
mejorar el rendimiento del s istema.
573
Interfaz gráfic a
39.8. Interfaz gráfica
Algunas preferenc ias de Oprofile se pueden configurar con una interfaz gráfica. Para iniciarla, ejec ute
el comando oprof_start como root en el indicador de comandos. Para utilizar la interfaz gráfica
nec es itará tener instalado el paquete oprofile-gui.
Después de cambiar cualquiera de las opc iones, las puede guardar pulsando el botón Guardar y
salir. Las preferenc ias son esc ritas al /root/.oprofile/daemonrc y la aplicac ión termina. Al salir
de la aplic ación no detiene a Oprofile de seguir tomando mues tras.
On the Setup tab, to set events for the proc essor c ounters as disc ussed in Sección 39.2.2,
“Configurar los ev entos a supervisar”, selec t 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 interfac e also
displays w hether the profiler is running and some brief statis tics about it.
Figura 39.1. Dispos ic ión de Oprofile
On the right side of the tab, selec t 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 unselec ted, no samples are collected for the kernel.
574
Interfaz gráfic a
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
unselec ted, no samples are collected for user applications.
Use the Count text field to set the sampling rate for the currently selec ted event as discussed in
Sección 39.2.2.1, “Velocidad de muestreo”.
If any unit masks are available for the currently selec ted 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 bes ide the unit mask to enable it for the event.
En la pestaña Configuración, para perfilar el kernel, ingrese el nombre y ubic ac ión del archivo
vmlinux del kernel para supervisar en el c ampo de texto Archivo de imagen del kernel. Para
configurar Oprofile para que no supervise el kernel, selecc ione No kernel image.
Figura 39.2. OProfile Configuration
Si la opción Verbose está selecc ionada, el demonio de registro de oprofiled incluye más
información.
If Pe r-application kernel samples files is selec ted, OProfile generates per-applic ation profiles for
the kernel and kernel modules as disc ussed in Sección 39.2.3, “Separar perfiles del Kernel y del
espacio del usuario”. This is equivalent to the opcontrol --separate=kernel c ommand. If Per-
application share d libs samples files is selec ted, OProfile generates per-applic ation profiles for
libraries. This is equivalent to the opcontrol --separate=library c ommand.
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 aplic ac ión no se detiene Oprofile de continuar tomando
muestras.
575
Interfaz gráfic a
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 s iguientes.
39.9.1. Documentos instalados
• /usr/share/doc/oprofile-<version>/oprofile.html — OProfile Manual
• oprofile man page — Disc usses opcontrol, opreport, opannotate, y ophelp
39.9.2. Sitios Web útiles
• http://oprofile. sourceforge.net/ — contiene la última doc umentac ión, listas de correo,
canales IRC y mucho más.
Recommended