• Like

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

39 o profile

  • 455 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
455
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
3
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 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 es ador 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 es adores incluyen hardw are dedicado a la s upervis 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 s e 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 bas ado en temporizadores en c as os donde no está pres ente 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 atribuí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 is o 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 proces ador, 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 hanis m 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 es os limitados al CPU. Oprofile no identifica proc es os 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. 561
  • 2. Configurar los eventos a supervis ar Comando Des cripción ophel p Displays available events for the system's proc ess or 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 s ourc 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 s elecc ionar supervis ar el kernel (o selecc ionar no supervis ar el kernel). Las secciones s iguientes describen c ómo utilizar la utilidad opcontrol para configurar Oprofile. A medida que s e 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 supervis ar 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 s uper vis ar el kernel, ejec ute el c omando s iguiente como root: opc ont ro l --setu p --vm linu x =/u sr /lib/ de bu g/lib /m odul e s/`u na me -r` /vm linu x 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: opc ont rol --setup --no- vmli nux 562
  • 3. Configurar los eventos a supervis ar 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 director y. Nota Aún si se configura Oprofile para que no perfile el kernel, el kernel de SMP debe es tar ejec utándos e para que el módulo oprofile se pueda cargar a partir de este. Setting whether s amples 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 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 es s ors 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 ess or. Proces ador 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- i386/p4-ht 4 threaded) 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 es adores y c ontadores de Oprofile Use Tabla 39.2, “Procesadores y contadores de Oprofile” to verify that the correct proc es sor type w as detected and to determine the number of events that can be monitored s imultaneous ly. ti m er is used as the proc ess or type if the proc es s or does not have supported performance monitoring hardware. Si se utiliza tim er, los eventos no se pueden configurar para ningún proc es ador porque el hardware no tiene el s oporte para el hardw are de contadores de rendimiento. En su lugar, se utilizan las interrupc iones del temporizador para crear perfiles. 563
  • 4. Configurar los eventos a supervis ar If ti m er is not used as the proc ess or type, the events monitored can be changed, and counter 0 for the proc ess or is set to a time-bas ed event by default. If more than one counter exists on the proc ess or, 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 Des cripción el Contador Pentium Pro, Pentium CPU_CLK_UNHALTED The proc ess or's clock is not halted II, Pentium III, Athlon, AMD64 Pentium 4 (HT y no- GLOBAL_POWER_EVENTS El tiempo durante el cual el proc es ador HT) 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 es ador ppc64/pow er5 CICLOS Ciclos del Proc es ador ppc 64/970 CICLOS Ciclos del Proc es ador Tabla 39.3. Eventos predeterminados El número de eventos que s e pueden s upervis ar a la vez, es determinado por el número de contadores para el proc es ador. Sin embargo, no es una relación de uno a uno; en algunos procesadores, se deben mapear ciertos eventos a contadores es pecífic os. Para determinar el número de contadores dis ponibles, ejecute el comando s iguiente: ls -d /d ev/o pr ofile/ [0 -9 ]* The events available vary depending on the proc ess or 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 : opcontr ol --e ve nt =<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 s amples. 564
  • 5. Separar perfiles del Kernel y del es pac io del us uario 39.2.2.1. Velocidad de muestreo Por defec to, se s elecc iona un evento bas ado en tiempo. Esto crea aproximadamente 100,000 muestras por segundo por proc es ador. Si se utilizan las interrupc iones del temporizador, el temporizador es configurado a la veloc idad ins tantánea que sea y no el us uario no la puede configurar. Si el cpu_type no es time 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 s e puede es pec ific ar una veloc idad de muestreo: opcontr ol --e ve nt =<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 demas iada frecuenc ia puede s obrec argar al s is tema, c aus ando 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 des empeñ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 es pec ificar más de una máscara de unidad, los valores hexadec imales deben estar c ombinados us ando una operac ión de bits or. opcontr ol --e ve nt =<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 us uario 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: opcontr ol --e ve nt =<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: opcontr ol --e ve nt =<event-name>:<sample-rate>:<unit-mask>:1 Para configurar Oprofile para que ignore eventos en modo usuario para un contador es pec ífic o, ejec ute el s iguiente c omando: 565
  • 6. Separar perfiles del Kernel y del es pac io del us uario opcontr ol --e ve nt =<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: opcontr ol --e ve nt =<event-name>:<sample-rate>:<unit-mask>:<kernel>:1 Cuando el demonio Oprofile escribe datos del perfil a los archivos de mues tras, puede s eparar los datos del perfil de kernel y de la biblioteca en archivos s eparados. Para configurar la forma en que el demonio escribe a los archivos de mues tra, ejec ute el comando s iguiente como root: opcontr ol --se pa rat e =<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 supervis ar el s is tema con Oprofile, ejec ute el c omando s iguiente como root: opcontr ol --sta r t Se mues tra una salida similar a la siguiente: Using lo g file /var/lib/ oprofile/ opr ofiled.l og 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/sam ples/. El archivo de registro para el demonio está ubic ado en /var/lib/oprofile/o profiled.log . Para detener el perfilador, ejec ute el s iguiente comando como root: 566
  • 7. Guardar los datos opcontrol --shutdown 39.4. Guardar los datos Algunas veces es útil guardar las muestras a una hora espec ífic a. Por ejemplo, cuando se esté perfilando un ejec utable, puede ser útil reunir muestras diferentes bas adas en diferentes conjuntos de datos de entrada. Si el número de eventos a monitorear exc ede el número de contadores dis ponibles para el proc es ador, s e 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 files, exec ute the following command, replac ing <name> with a unique descriptive name for the current sess ion. opcontr ol --sa ve =<name > Se crea el directorio /var/lib/oprofile/sam ples/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/sam ples/. 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 es ador Pentium III para /bin/ bash se convierte en: {root}/bin/bash/{dep}/{root}/bin/bash/CPU_ CLK_UNHALTED.10000 0 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 us ed 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. 567
  • 8. Guardar los datos Samples for eac h exec utable are written to a single s ample file. Samples from each dynamically linked library are also written to a single sample file. While OProfile is running, if the exec utable being monitored c hanges and a sample file for the exec utable exists, the existing s ample file is automatically deleted. Thus, if the existing s ample file 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 s amples during analys is. If the exec utable c hanges the analys is tools will be unable to analyze the ass oc iated s amples. Refer to Sección 39.4, “Guardar los datos” for details on how to bac kup the sample file. 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: Pr of il i ng t hr o u g h ti m er interrupt T I M E R:0| samples| %| ------------------ 25926 97.5212 no-vmlinux 359 1.3504 pi 65 0.2 44 5 Xo r g 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.0 3 0 1 li b g d k- x 1 1- 2. 0.s o. 0. 4 0 0. 1 3 6 0.0226 libgobject-2.0.so.0.400.7 5 0.0188 o pr o fi le d 4 0.0150 libpthread-2.3.4.so 4 0.0 1 5 0 li b g t k - x 1 1- 2. 0 .s o. 0. 4 0 0 . 1 3 3 0.0113 li b Xr e n d er.s o . 1. 2. 2 3 0.0113 du 1 0.0038 libcrypto.so.0.9.7a 1 0.0 03 8 li b pa m.s o. 0. 7 7 1 0.0038 l i bt er m ca p .s o. 2 . 0. 8 1 0.0 0 3 8 li b X1 1 .s o. 6. 2 1 0.0038 l i b g t hr ea d - 2. 0 .s o . 0. 4 0 0 . 7 1 0.0 0 3 8 li b wn c k - 1.s o. 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 s obre un ejec utable en particular utilice opreport: 568
  • 9. 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-<ve rsio n>.so : samples % sy m bo l n a me 12 21.4286 gco nv _t ransf or m _ utf 8_ in terna l 5 8.9286 _i nt_ mal loc 4 7.1429 malloc 3 5.3571 i68 6.get _pc _th u nk. 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 _ i nte r n _l oca le _ dat a 2 3.5714 free 2 3.5714 strcmp 1 1.7857 cty p e _ ge t _ m b_ c ur _ m ax 1 1.7857 u n re g is ter _ at f o r k 1 1.7857 write _n ocancel 1 1.7857 _dl _addr 1 1.7857 _ i n t _ fre e 1 1.7857 _itoa_word 1 1.7857 calc _ ec l os u re _ i te r 1 1.7857 fopen@@GLI BC_2.1 1 1.7857 ge t pi d 1 1.7857 memmove 1 1.7857 msort_with_tmp 1 1.7857 str c p y 1 1.7857 strlen 1 1.7857 vfpri ntf 1 1.7857 wr ite 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 /li b/tl s/ libc-<versio n> .so : samples % sy m bo l n a me 12 10 0. 00 0 gc o nv _tra nsf or m _u tf 8_ in ternal La primera línea es un res úmen para la combinac ión símbolo/ejecutable. 569
  • 10. Utilizando opreport en un Ejecutable Unico La primera columna es el número de muestras para el símbolo de memoria. La s egunda 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_transfo rm _utf8_i nternal /l i b/tl s/ libc-<versio n> .so : vma samples % sy m bo l n a me 00 a 9 86 4 0 1 2 10 0. 00 0 gc o nv _tra nsf or m _u tf 8_ in ternal 00 a 9 86 4 0 1 8.3333 00 a 9 8 68 c 2 16.6667 00 a 9 8 69 a 1 8.3333 00 a 9 8 6 c1 1 8.3333 00 a 9 87 2 0 1 8.3333 00 a 9 87 4 9 1 8.3333 00 a 9 87 5 3 1 8.3333 00 a 9 87 8 9 1 8.3333 00 a 9 88 6 4 1 8.3333 00 a 9 88 6 9 1 8.3333 00 a 9 8 b0 8 1 8.3333 Los datos son los mis mos 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 s e des pliegan, 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 s eparada por comas de la s alida. session:<name> Es pec ific a la ruta completa a la s es 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 us uario 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 s e 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 miss es " and ass uming you would like to see the data for the ext3 module: $ opreport /ext3 CPU: AMD64 process ors, s pee d 79 7. 9 4 8 MHz (esti m a te d) Co un t e d DAT A_C AC HE_ AC C E S SE S eve nts ( Da ta cache accesses) wit h a u nit mask of 0x00 (No unit mask) count 500000 Co un t e d DAT A_ C AC HE _ M I SS E S even ts (Data cache misses) with a uni t mask of 0x0 0 (No unit mas k) count 500000 570
  • 11. Utilizando opannotate DAT A_ CACHE_ ACC...|DAT A_ CACHE_ MI S...| sam ples| %| samples| %| ------------------------------------ 1 4 8 72 1 10 0 . 0 00 1 4 9 3 1 0 0. 0 0 0 ext 3 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 des de una cosntrcc ión pers onalizada) 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/mo dul e s/`un am e -r`/kernel/fs/ex t3/ext3.k o /ext3 Then the detailed information can be obtained with: # opr ep o rt im ag e:/ e xt3 -l |m o re war ni n g: c ou l d no t chec k tha t t he bi nar y file /ext 3 has not been m o dified si nce the profile was take n. Res u lt s may be inaccurate. CPU: AMD64 process ors, s pee d 79 7. 9 4 8 MHz (esti m a te d) Co un t e d DAT A_C AC HE_ AC C E S SE S eve nts ( Da ta cache accesses) wit h a u nit mask of 0x00 (No unit mask) count 500000 Co un t e d DAT A_ C AC HE _ M I SS E S even ts (Data cache misses) with a uni t mask of 0x0 0 (No unit mas k) count 500000 samples % samples % sy m bo l n ame 16 7 28 11.2479 7 0.4689 ext3_ gro up _sparse 16 4 54 11.0637 4 0.2679 ext3 _co un t_free_ bl ocks 14 5 83 9.8056 51 3.4159 e xt 3 _ f il l _s u p e r 82 8 1 5.5681 12 9 8.6403 ext3_ioctl 78 1 0 5.2514 62 4.1527 ext 3 _ wr ite _i nf o 72 8 6 4.8991 67 4.4876 ext3_ ordered _wr itepage 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 xt 3 _ x a tt r _ b l oc k _ l is 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 orres pondientes en el código fuente. Los archivos que res ultan 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 Enterpris e Linux pac kages are not compiled with this option. La sintaxis general para opannotate es la s iguiente: opannotate --se ar c h-d ir s <sr c-d ir> - - so u rc e < ex e cu ta bl e > Se debe es pec ific ar el directorio que contiene el código fuente y el ejecutable a analizar. Cons ulte la página del manual de opannotate para obtener una lista con las opc iones de línea de comandos adic ionales. 571
  • 12. 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 es ador que Oprofile detectó: c at /d e v/ o pr of il e/ cp u _t yp e 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á des activado y no se reúnen muestras para este; si es 1, el contador está activado y s e es tán rec ogiendo las mues tras. • event — El evento a s upervisar • kernel — Si es 0, las mues tras no son reunidas para este c ontador de eventos c uando el proc es ador está en el es pac io del kernel; si es 1, las mues tras son reunidas aún si el proc es ador está en el es pac 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 es ador es tá en el es pac io del usuario; si es 1, las muestras son reunidas aún si el proc es ador está en el es pac 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 us ado por des arrolladores para analizar el rendimiento de una aplicac ión, también puede ser us ado 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 es ador 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 ons uman más tiempo de proc es amiento s e pueden mover a sistemas dedic ados. • Determinar el uso del procesador — El evento CPU_CLK_UNHALTED s e puede monitorear para determinar la c arga del proc es ador durante un tiempo determinado. Es tos datos luego se pueden usar para determinar si la implementac ión de proc es adores adic ionales o más rápidos pueden mejorar el rendimiento del s istema. 572
  • 13. 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. Des pués de cambiar cualquiera de las opc iones, las puede guardar puls ando 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 ess or c ounters as disc uss ed 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 als o 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 uns elec ted, no samples are collected for the kernel. 573
  • 14. 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 uns elec 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 mas ks are available for the currently selec ted event, as discussed in Sección 39. 2.2. 2, “Máscaras de unidades”, they are dis played 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, ingres e el nombre y ubic ac ión del archivo vmlinux del kernel para supervis ar en el c ampo de texto Archivo de imagen del kernel. Para configurar Oprofile para que no supervis e el kernel, selecc ione No kernel image. Figura 39.2. OProfile Configuration Si la opción Verbose está s elecc 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 uss ed in Sección 39. 2.3, “Separar perfiles del Kernel y del espacio del usuario”. This is equivalent to the opcontrol --separ ate=k ernel 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. 574
  • 15. Interfaz gráfic a 39.9. Recursos adicionales Este capítulo solamente res alta Oprofile y cómo configurarlo y utilizarlo. Para aprender un poco más, cons ulte los recurs os s iguientes. 39.9.1. Documentos instalados • /usr/share/doc/oprofile-<version>/oprofile.html — OProfile Manual • oprofile man page — Disc uss es opcontrol, opreport, opannotate, y ophel p 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. 575