SINOPSIS
readprofile [ options ]
VERSIÓN
Esta página de manual documenta la versión 2.0 del programa.
DESCRIPCIÓN
El comando readprofile usa la información de /proc/profile para 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 que
readprofile
só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 -i sólo se imprime el número decimal.
- -a
-
Imprime todos los símbolos del fichero de mapa. Por defecto los
procedimientos con 0 impulsos de reloj no son impresos.
- -r
-
Reiniciar el buffer de perfil. Esto sólo puede ser invocado por el
usuario root, porque
/proc/profile
puede ser leído por cualquiera pero sólo puede ser modificado por el
superusuario. De todas maneras, puede hacer
readprofile
setuid 0, para poder reiniciar el buffer sin necesidad de los
privilegios.
- -v
-
Prolijo. La salida es organizada en cuatro columnas y rellenada con
blancos. 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 que
readprofile
imprima su número de versión y termine.
EJEMPLOS
Ver el buffer de perfil ordenándolo por impulsos de reloj:readprofile | sort -nr | lessImprimir los 20 procedimientos más cargados:
readprofile | sort -nr +2 | head -20Imprimir sólo el perfil del sistema de ficheros:
readprofile | grep _ext2Mirar toda la información del núcleo, con las direcciones de RAM:
readprofile -av | lessVer 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
readprofile sólo funciona con núcleos 1.3.x o superiores, porque /proc/profile cambió 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 :-)