PROF(1)                                                   PROF(1)

     NAME
          prof, tprof, kprof - display profiling data

     SYNOPSIS
          prof [ -dr ] [ program ] [ profile ]

          tprof pid

          kprof kernel kpdata

     DESCRIPTION
          Prof interprets files produced automatically by programs
          loaded using the -p option of 2l(1) or other loader.  The
          symbol table in the named program file (`2.out' etc.,
          according to $objtype, by default) is read and correlated
          with the profile file (`prof.out' by default).  For each
          symbol, the percentage of time (in seconds) spent executing
          between that symbol and the next is printed (in decreasing
          order), together with the time spent there and the number of
          times that routine was called.

          Under option -d, prof prints the dynamic call graph of the
          target program, annotating the calls with the time spent in
          each routine and those it calls, recursively.  The output is
          indented two spaces for each call, and is formatted as
               symbol:time/ncall
          where symbol is the entry point of the call, time is in mil-
          liseconds, and ncall is the number of times that entry point
          was called at that point in the call graph.  If ncall is
          one, the /ncall is elided.  Normally recursive calls are
          compressed to keep the output brief; option -r prints the
          full call graph.

          The size of the buffer in program used to hold the profiling
          data, by default 2000 entries, may be controlled by setting
          the environment variable profsize before running program. If
          the buffer fills, subsequent function calls may not be
          recorded.

          Tprof is similar to prof, but is intended for profiling mul-
          tiprocess programs.  It uses the /proc/pid/profile file to
          collect instruction frequency counts for the text image
          associated with the process, for all processes that share
          that text.  It must be run while the program is still
          active, since the data is stored with the running program.
          To enable tprof profiling for a given process,
              echo profile > /proc/pid/ctl
          and then, after the program has run for a while, execute
              tprof pid
          Since the data collected for tprof is based on interrupt-

     Page 1                       Plan 9            (printed 11/22/24)

     PROF(1)                                                   PROF(1)

          time sampling of the program counter, tprof has no -d or -r
          options.

          Kprof is similar to prof, but presents the data accumulated
          by the kernel profiling device, kprof(3).  The symbol table
          file, that of the operating system kernel, and the data
          file, typically /dev/kpdata, must be provided.  Kprof has no
          options and cannot present dynamic data.

     SOURCE
          /sys/src/cmd/prof.c
          /sys/src/cmd/kprof.c

     SEE ALSO
          2l(1), kprof(3)

     Page 2                       Plan 9            (printed 11/22/24)