summaryrefslogtreecommitdiff
path: root/static/plan9-4e/man1/prof.1
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-26 16:38:00 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-26 16:38:00 -0400
commit97d5c458cfa039d857301e1ca7d5af3beb37131d (patch)
treeb460cd850d0537eb71806ba30358840377b27688 /static/plan9-4e/man1/prof.1
parentb89dc2331a50c63f8b33272a5c4c61ab98abdaa3 (diff)
build: Better Build System
Diffstat (limited to 'static/plan9-4e/man1/prof.1')
-rw-r--r--static/plan9-4e/man1/prof.1132
1 files changed, 132 insertions, 0 deletions
diff --git a/static/plan9-4e/man1/prof.1 b/static/plan9-4e/man1/prof.1
new file mode 100644
index 00000000..6dedeb21
--- /dev/null
+++ b/static/plan9-4e/man1/prof.1
@@ -0,0 +1,132 @@
+.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
+.EX
+ symbol:time/ncall
+.EE
+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
+.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,
+.EX
+ echo profile > /proc/\f2pid\f1/ctl
+.EE
+and then, after the program has run for a while, execute
+.EX
+ tprof \f2pid\f1
+.EE
+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 kprof (3)