summaryrefslogtreecommitdiff
path: root/sys/man/1/prof
diff options
context:
space:
mode:
authorTaru Karttunen <taruti@taruti.net>2011-03-30 16:49:47 +0300
committerTaru Karttunen <taruti@taruti.net>2011-03-30 16:49:47 +0300
commitb41b9034225ab3e49980d9de55c141011b6383b0 (patch)
tree891014b4c2e803e01ac7a1fd2b60819fbc5a6e73 /sys/man/1/prof
parentc558a99e0be506a9abdf677f0ca4490644e05fc1 (diff)
Import sources from 2011-03-30 iso image - sys/man
Diffstat (limited to 'sys/man/1/prof')
-rwxr-xr-xsys/man/1/prof167
1 files changed, 167 insertions, 0 deletions
diff --git a/sys/man/1/prof b/sys/man/1/prof
new file mode 100755
index 000000000..40e4a9901
--- /dev/null
+++ b/sys/man/1/prof
@@ -0,0 +1,167 @@
+.TH PROF 1
+.SH NAME
+prof, tprof, kprof \- display profiling data
+.SH SYNOPSIS
+.B prof
+[
+.B -dr
+]
+[
+.I program
+]
+[
+.I profile
+]
+.PP
+.B tprof
+.I pid
+.PP
+.B kprof
+.I kernel
+.I kpdata
+.SH DESCRIPTION
+.I Prof
+interprets files produced automatically by programs loaded using the
+.B -p
+option of
+.IR 2l (1)
+or other loader.
+The symbol table in the
+named program file
+.RL ( 2.out
+etc., according to
+.BR $objtype ,
+by default)
+is read and correlated with the
+profile file
+.RL ( 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.
+.PP
+Under option
+.BR -d ,
+.I 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
+.IP
+.EX
+symbol:time/ncall
+.EE
+.LP
+where
+.I symbol
+is the entry point of the call,
+.I time
+is in milliseconds,
+and
+.I ncall
+is the number of times that entry point was called at that
+point in the call graph. If
+.I ncall
+is one, the
+.B /ncall
+is elided.
+Normally recursive calls are compressed to keep the output brief;
+option
+.B -r
+prints the full call graph.
+.PP
+The size of the buffer
+in
+.I program
+used to hold the profiling
+data, by default 2000 entries,
+may be controlled by setting the environment variable
+.B profsize
+before running
+.IR program .
+If the buffer fills, subsequent function calls may not be recorded.
+.PP
+The profiling code provided by the linker initializes itself to profile the current pid,
+producing a file called
+.B prof.\f2pid\fP.
+If a process forks, only the parent will continue to be profiled. Forked children
+can cause themselves to be profile by calling
+.IP
+.EX
+prof(fn, arg, entries, what)
+.EE
+.LP
+which causes the function \f2fn\fP(\f2arg\fP) to be profiled. When \f2fn\fP
+returns
+.B prof.\f2pid\fP
+is produced for the current process pid.
+.PP
+The environment variable
+.B proftype
+can be set to one of
+.BR user ,
+.BR kernel ,
+.BR elapsed ,
+or
+.BR sample ,
+to profile time measured spent in user mode, time spent in user+kernel mode, or elapsed time,
+using the cycle counter, or the time in user mode using the kernel's HZ clock. The cycle counter
+is currently only available on modern PCs and on the PowerPC. Default profiling measures user
+time, using the cycle counter if it is available.
+.PP
+.I Tprof
+is similar to
+.IR prof ,
+but is intended for profiling multiprocess programs.
+It uses the
+.BI /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
+.I tprof
+profiling for a given process,
+.IP
+.EX
+echo profile > /proc/\f2pid\f1/ctl
+.EE
+.LP
+and then, after the program has run for a while, execute
+.IP
+.EX
+tprof \f2pid\f1
+.EE
+.LP
+Since the data collected for
+.I tprof
+is based on interrupt-time sampling of the program counter,
+.I tprof
+has no
+.B -d
+or
+.B -r
+options.
+.PP
+.I Kprof
+is similar to
+.IR prof ,
+but presents the data accumulated by the kernel
+profiling device,
+.IR kprof (3) .
+The symbol table file, that of the operating system kernel,
+and the data file, typically
+.BR /dev/kpdata ,
+must be provided.
+.I Kprof
+has no options and cannot present dynamic data.
+.SH SOURCE
+.B /sys/src/cmd/prof.c
+.br
+.B /sys/src/cmd/kprof.c
+.SH SEE ALSO
+.IR 2l (1),
+.IR exec (2),
+.IR kprof (3)