15

Click here to load reader

39 o profile

Embed Size (px)

Citation preview

Page 1: 39  o profile

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.

Page 2: 39  o profile

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

Page 3: 39  o profile

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.

Page 4: 39  o profile

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.

Page 5: 39  o profile

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:

Page 6: 39  o profile

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:

Page 7: 39  o profile

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.

Page 8: 39  o profile

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:

Page 9: 39  o profile

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.

Page 10: 39  o profile

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

Page 11: 39  o profile

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.

Page 12: 39  o profile

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.

Page 13: 39  o profile

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.

Page 14: 39  o profile

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.

Page 15: 39  o profile

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.