NOMBRE¶
readprofile - una herramienta para leer la información del perfil
(profile) del núcleo
SINOPSIS¶
readprofile[
options]
VERSIÓN¶
Esta página de manual documenta la versión 2.0 del programa.
DESCRIPCIÓN¶
El comando
readprofileusa la información
de
/proc/profilepara imprimir datos ASCII por la salida estándar.
La salida está organizada en tres columnas: la primera es el
número de impulsos de reloj, la segunda es el nombre de la
función C en el núcleo donde esos impulsos ocurrieron y el
tercero es la `carga' normalizada del procedimiento, calculada como un ratio
entre el número de impulsos de reloj y la duración del
procedimiento. La salida es rellenada con espacios en blanco para mejorar la
lectura.
Las opciones de línea de comandos disponibles son los siguientes:
- -m mapfile
- Especifica un fichero de mapa, el defecto
es/usr/src/linux/System.map. Puede especificar el fichero de mapa
en la línea de comandos si su núcleo actual no es el
último que compiló. Si el nombre del fichero de mapa termina
con `.gz' es descomprimido transparentemente.
- -p pro-file
- Especifica un búffer de perfil diferente, por defecto
es/proc/profile. Es útil especificar un nuevo búffer
si desea tener una `instantánea' del perfil del núcleo en un
instante determinado y desea leerla más tarde. El fichero
/proc/profile puede ser copiado usando `cat' o `cp'. No existe
soporte para buffers de perfil comprimidos, como en
readprofile-1.1, porque el programa necesita saber de antemano el
tamaño del buffer.
- -i
- Información. Esto hace quereadprofilesólo imprima el
paso de perfil usado por el núcleo. El `paso de perfil' es la
resolución del buffer de perfil y es seleccionado durante la
configuración del núcleo (a través de `make config'),
o en la línea de comandos del núcleo.
Si la opción -t(conciso) es usada junto
con-isólo se imprime el número decimal.
- -a
- Imprime todos los símbolos del fichero de mapa. Por defecto
losprocedimientos con 0 impulsos de reloj no son impresos.
- -r
- Reiniciar el buffer de perfil. Esto sólo puede ser invocado por
elusuario root, porque /proc/profilepuede ser leído por
cualquiera pero sólo puede ser modificado por el superusuario. De
todas maneras, puede hacer readprofilesetuid 0, para poder
reiniciar el buffer sin necesidad de los privilegios.
- -v
- Prolijo. La salida es organizada en cuatro columnas y rellenada
conblancos. La primera columna es la dirección RAM de la
función del núcleo, la segunda es el nombre de la
función, la tercera es el número de impulsos de reloj y la
última es la carga normalizada.
- -V
- Versión. Esto hace quereadprofileimprima su número de
versión y termine.
EJEMPLOS¶
Ver el buffer de perfil ordenándolo por impulsos de reloj:
readprofile | sort -nr | less
Imprimir los 20 procedimientos más cargados:
readprofile | sort -nr +2 | head -20
Imprimir sólo el perfil del sistema de ficheros:
readprofile | grep _ext2
Mirar toda la información del núcleo, con las direcciones de RAM:
readprofile -av | less
Ver una `instantánea' del buffer de perfil para un núcleo que no
es el actual:
readprofile -p ~/profile.instantanea -m /zImage.map.gz
FALLOS¶
readprofilesólo funciona con núcleos 1.3.x o superiores,
porque
/proc/profilecambió en el paso entre el 1.2 y el 1.3
Este programa sólo funciona con núcleos ELF. El cambio para
núcleos a.out es trivial y se deja como ejercicio para el usuario de
a.out.
Para habilitar el perfil, el núcleo debe ser reiniciado, porque no existe
un módulo para el perfil y no sería fácil de implementar.
Para habilitar el perfil, debe especificar "profile=2" (u otro
número) en la línea de comandos del núcleo. El
número que especifique es el exponente de dos usado como paso de
perfil.
El perfil se encuentra deshabilitado cuando las interrupciones son
deshabilitadas. Esto significa que muchos de los impulsos de reloj ocurren
cuando las interrupciones se habilitan de nuevo. Guarde atención con la
información que puede inducirle a error.
FICHEROS¶
/proc/profile Una imagen binaria del buffer de perfil.
/usr/src/linux/System.map El mapa de símbolos del núcleo.
/usr/src/linux/* El programa que se está perfilando :-)