prof(1)
NAME
prof − display profile data
SYNOPSIS
prof [−tcan] [−ox] [−g] [−z] [−h] [−s] [−m mdata] [prog]
DESCRIPTION
prof interprets a profile file produced by the monitor(3C) function. The symbol table in the object file prog (a.out by default) is read and correlated with a profile file (mon.out by default). For each external text symbol the percentage of time spent executing between the address of that symbol and the address of the next is printed, together with the number of times that function was called and the average number of milliseconds per call.
The mutually exclusive options t, c, a, and n determine the type of sorting of the output lines:
−t Sort by decreasing percentage of total time (default).
−c Sort by decreasing number of calls.
−a Sort by increasing symbol address.
−n Sort lexically by symbol name.
The mutually exclusive options o and x specify the printing of the address of each symbol monitored:
−o Print each symbol address (in octal) along with the symbol name.
−x Print each symbol address (in hexadecimal) along with the symbol name.
The following options may be used in any combination:
−g Include non-global symbols (static functions).
−z Include all symbols in the profile range (see monitor(3C)), even if associated with zero number of calls and zero time.
−h Suppress the heading normally printed on the report. (This is useful if the report is to be processed further.)
−s Print a summary of several of the monitoring parameters and statistics on the standard error output.
−m mdata
Use file mdata instead of mon.out as the input profile file.
A program creates a profile file if it has been loaded with the −p option of cc(1). This option to the cc command arranges for calls to monitor(3C) at the beginning and end of execution. It is the call to monitor at the end of execution that causes a profile file to be written. The number of calls to a function is tallied if the −p option was used when the file containing the function was compiled.
The name of the file created by a profiled program is controlled by the environment variable PROFDIR. If PROFDIR does not exist, mon.out is produced in the directory current when the program terminates. If PROFDIR = string, “string/pid.progname” is produced, where progname consists of argv[0] with any path prefix removed, and pid is the program’s process id. If PROFDIR = nothing, no profiling output is produced.
A single function may be split into subfunctions for profiling by means of the MARK macro (see prof(5)).
FILES
mon.out for profile
a.outfor namelist
SEE ALSO
cc(1).
exit(2), profil(2), monitor(3C), prof(5) in the CX/UX Programmer’s Reference Manual.
WARNING
The times reported in successive identical runs may show variances of 20% or more, because of varying cache-hit ratios due to sharing of the cache with other processes. Even if a program seems to be the only one using the machine, hidden background or asynchronous processes may blur the data. In rare cases, the clock ticks initiating recording of the program counter may “beat” with loops in a program, grossly distorting measurements.
In the CX/RT kernel, profiling is not supported by default. prof will still run and count the number of calls to individual routines, but the times column will only contain zero. To fully enable profiling the USERPROFILE flag must be specified in the configuration file.
Call counts are always recorded precisely, however.
NOTE
The format of a profile file is not guaranteed to be portable across systems provided by different vendors. In particular, Motorola 88000 programs which are certified to conform to the 88open Compatibility Standards may not be profilable on a foreign system.
BUGS
Only programs that call exit(2) or return from main will cause a profile file to be produced, unless a final call to monitor is explicitly coded.
The use of the −p option cc(1) to invoke profiling imposes a limit of 600 functions that may have call counters established during program execution. For more counters you must call monitor(3C) directly. If this limit is exceeded, other data will be overwritten and the mon.out file will be corrupted. The number of call counters used will be reported automatically by the prof command whenever the number exceeds 5/6 of the maximum.
CX/UX User’s Reference Manual