39 o profile

741 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
741
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

39 o profile

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

×