READPROFILE(1)                                     READPROFILE(1)

NAME
       readprofile - a tool to read kernel profiling information

SYNOPSIS
       readprofile [ options ]

VERSION
       This manpage documents version 2.0 of the program.

DESCRIPTION
       The readprofile command uses the /proc/profile information
       to print ascii data on standard  output.   The  output  is
       organized  in  three  columns:  the first is the number of
       clock ticks, the second is the name of the C  function  in
       the  kernel where those many ticks occurred, and the third
       is the normalized `load' of the procedure, calculated as a
       ratio  between  the number of thicks and the lenght of the
       procedure. The output is filled with blanks to ease  read-
       ability.

       Available command line options are the following:

       -m mapfile
              Specify    a   mapfile,   which   by   default   is
              /usr/src/linux/System.map.  You should specify  the
              map  file  on  cmdline if your current kernel isn't
              the last one you compiled. If the name of  the  map
              file ends with `.gz' it is decompressed on the fly.

       -p pro-file
              Specify a  different  profiling  buffer,  which  by
              default  is  /proc/profile.  Using a different pro-
              file is useful if you want to `freeze'  the  kernel
              profiling  at  some  time  and  read  it later. The
              /proc/profile file can be  copied  using  `cat'  or
              `cp'.  There is no more support for compressed pro-
              file buffers, like in readprofile-1.1, because  the
              program  needs  to  know  the size of the buffer in
              advance.

       -i     Info. This makes readprofile only print the profil-
              ing step used by the kernel.  The profiling step is
              the resolution of the profiling buffer, and is cho-
              sen during kernel configuration (through `make con-
              fig'), or in the kernel's command line.  If the  -t
              (terse)  switch  is  used together with -i only the
              decimal number is printed.

       -a     Print all symbols in the mapfile.  By  default  the
              procedures with 0 reported ticks are not printed.

       -r     Reset  the  profiling  buffer.  This  can  only  be
              invoked by root, because /proc/profile is  readable
              by  everybody  but  writable only by the superuser.
              However, you can  make  readprofile  setuid  0,  in
              order  to  reset  the buffer without gaining privi-
              leges.

       -v     Verbose. The output is organized  in  four  columns
              and  filled  with  blanks.  The first column is the
              RAM address of a kernel function, the second is the
              name  of  the  function, the third is the number of
              clock ticks and the last is the normalized load.

       -V     Version. This makes readprofile print  its  version
              number and exit.

EXAMPLES
       Browse the profiling buffer ordering by clock ticks:
          readprofile | sort -nr | less

       Print the 20 most loaded procedures:
          readprofile | sort -nr +2 | head -20

       Print only filesystem profile:
          readprofile | grep _ext2

       Look at all the kernel information, with ram addresses"
          readprofile -av | less

       Browse  a  `freezed' profile buffer for a non current ker-
       nel:
          readprofile -p ~/profile.freeze -m /zImage.map.gz

BUGS
       readprofile only works with  an  1.3.x  or  newer  kernel,
       because /proc/profile changed in the step from 1.2 to 1.3

       This  program  only works with ELF kernels. The change for
       a.out kernels is trivial, and left as an exercise  to  the
       a.out user.

       To  enable profiling, the kernel must be rebooted, because
       no profiling module is available, and it wouldn't be  easy
       to build. To enable profiling, you can specify "profile=2"
       (or another number) on the kernel commandline.  The number
       you specify is the two-exponent used as profiling step.

       Profiling  is disabled when interrupts are inhibited. This
       means that many profiling ticks happen when interrupts are
       re-enabled. Watch out for misleading information.

FILES
       /proc/profile              A binary snapshot of the profiling buffer.
       /usr/src/linux/System.map  The symbol table for the kernel.
       /usr/src/linux/*           The program being profiled :-)

                             May 1996                           1