prof man page on OpenIndiana

Man page or keyword search:  
man Server   20441 pages
apropos Keyword Search (all sections)
Output format
OpenIndiana logo
[printable version]

prof(1)				 User Commands			       prof(1)

NAME
       prof - display profile data

SYNOPSIS
       prof [-ChsVz] [-a | c | n | t] [-o | x] [-g | l] [-m mdata]
	    [prog]

DESCRIPTION
       The  prof  command  interprets  a  profile file produced by the monitor
       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.

OPTIONS
       The mutually exclusive options -a, -c, -n, and -t determine the type of
       sorting of the output lines:

       -a    Sort by increasing symbol address.

       -c    Sort by decreasing number of calls.

       -n    Sort lexically by symbol name.

       -t    Sort by decreasing percentage of total time (default).

       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 mutually exclusive options -g and -l control the type of symbols to
       be reported. The	 -l option must be used with care; it applies the time
       spent in a static function to the preceding (in	memory)	 global	 func‐
       tion,  instead  of  giving  the static function a separate entry in the
       report. If all static functions are properly located, this feature  can
       be very useful. If not, the resulting report may be misleading.

       Assume  that   A	 and  B	 are global functions and only	A calls static
       function	 S. If	S is located immediately after	A in the  source  code
       (that  is,  if	S is properly located), then, with the	-l option, the
       amount of time spent in	A can easily be determined, including the time
       spent  in   S.  If,  however,  both   A and B call  S, then, if the  -l
       option is used, the report will be misleading; the  time	 spent	during
       B's  call  to   S will be attributed to	A, making it appear as if more
       time had been spent in  A than really had.  In this case,  function   S
       cannot be properly located.

       -g    List  the time spent in static (non-global) functions separately.
	     The -g option function is the opposite of the  -l function.

       -l    Suppress printing statically declared functions.  If this	option
	     is	 given, time spent executing in a static function is allocated
	     to the closest global function loaded before the static  function
	     in	 the executable.  This option is the default.  It is the oppo‐
	     site of  the  -g function and should be used with care.

       The following options may be used in any combination:

       -C	   Demangle C++ symbol names before printing them out.

       -h	   Suppress the heading normally printed on the	 report.  This
		   is useful if the report is to be processed further.

       -m mdata	   Use	file  mdata  instead  of  mon.out as the input profile
		   file.

       -s	   Print a summary of several of the monitoring parameters and
		   statistics on the standard error output.

       -V	   Print   prof version information on the standard error out‐
		   put.

       -z	   Include all symbols in the profile range, even  if  associ‐
		   ated with zero number of calls and zero time.

       A single function may be split into subfunctions for profiling by means
       of the  MARK macro. See	prof(5).

ENVIRONMENT VARIABLES
       PROFDIR	  The name of the file created by a profiled program  is  con‐
		  trolled  by  the environment variable PROFDIR. If PROFDIR is
		  not set,  mon.out is produced in the directory current  when
		  the program terminates. If  PROFDIR=string, string/pid.prog‐
		  name is produced, where  progname consists of	 argv[0]  with
		  any  path  prefix  removed, and pid is the process ID of the
		  program.  If PROFDIR is set, but null, no  profiling	output
		  is produced.

FILES
       mon.out	  default profile file

       a.out	  default namelist (object) file

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       ┌─────────────────────────────┬─────────────────────────────┐
       │      ATTRIBUTE TYPE	     │	    ATTRIBUTE VALUE	   │
       ├─────────────────────────────┼─────────────────────────────┤
       │Availability		     │developer/object-file	   │
       └─────────────────────────────┴─────────────────────────────┘

SEE ALSO
       gprof(1), exit(2), pcsample(2), profil(2), malloc(3C), malloc(3MALLOC),
       monitor(3C), attributes(5), prof(5)

NOTES
       If the executable image has been stripped and does not have the .symtab
       symbol  table, gprof reads the global dynamic symbol tables .dynsym and
       .SUNW_ldynsym, if present.  The symbols in the  dynamic	symbol	tables
       are a subset of the symbols that are found in .symtab. The .dynsym sym‐
       bol table contains the global  symbols  used  by	 the  runtime  linker.
       .SUNW_ldynsym  augments	the information in .dynsym with local function
       symbols. In the case where .dynsym is found and .SUNW_ldynsym  is  not,
       only  the   information	for  the  global symbols is available. Without
       local symbols, the behavior is as described for the  -a option.

       The times reported in successive	 identical  runs  may  show  variances
       because	of varying cache-hit ratios that result from sharing 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  pro‐
       gram  counter may beat with loops in a program, grossly distorting mea‐
       surements. Call counts are always recorded precisely, however.

       Only programs that call	exit or return from  main  are	guaranteed  to
       produce	a  profile file, unless a final call to	 monitor is explicitly
       coded.

       The times for static functions are attributed to the preceding external
       text  symbol if the -g option is not used. However, the call counts for
       the preceding function are still correct; that is, the static  function
       call counts are not added to the call counts of the external function.

       If more than one of the options	-t, -c, -a,  and  -n is specified, the
       last option specified is used and the user is warned.

       LD_LIBRARY_PATH must not contain /usr/lib as a component when compiling
       a  program  for	profiling. If	LD_LIBRARY_PATH contains /usr/lib, the
       program will not be linked correctly with the profiling versions of the
       system libraries in /usr/lib/libp. See gprof(1).

       Functions  such	as   mcount(), _mcount(), moncontrol(), _moncontrol(),
       monitor(), and _monitor() may appear in the prof report.	  These	 func‐
       tions  are  part	 of  the profiling implementation and thus account for
       some amount of the runtime overhead.  Since  these  functions  are  not
       present	in an unprofiled application, time accumulated and call counts
       for these functions may be ignored when evaluating the  performance  of
       an application.

   64-bit profiling
       64-bit  profiling  may  be used freely with dynamically linked executa‐
       bles, and profiling information is collected for the shared objects  if
       the  objects are compiled for profiling. Care must be applied to inter‐
       pret the profile output, since it is possible for symbols from  differ‐
       ent  shared  objects to have the same name. If duplicate names are seen
       in the profile output, it is better to use  the	-s  (summary)  option,
       which  prefixes	a module id before each symbol that is duplicated. The
       symbols can then be mapped to appropriate modules  by  looking  at  the
       modules information in the summary.

       If  the	-a  option  is	used with a dynamically linked executable, the
       sorting occurs on a per-shared-object basis.  Since  there  is  a  high
       likelihood  of  symbols	from  differed shared objects to have the same
       value, this results in an output that is more understandable.  A	 blank
       line  separates	the  symbols  from different shared objects, if the -s
       option is given.

   32-bit profiling
       32-bit profiling may be used with dynamically linked  executables,  but
       care  must  be  applied.	 In 32-bit profiling, shared objects cannot be
       profiled with  prof. Thus, when a profiled, dynamically linked  program
       is  executed, only the main portion of the image is sampled. This means
       that all time spent outside of the main object, that is, time spent  in
       a shared object, will not be included in the profile summary; the total
       time reported for the program may be less than the total time  used  by
       the program.

       Because	the time spent in a shared object cannot be accounted for, the
       use of shared objects should be minimized whenever a  program  is  pro‐
       filed  with  prof. If desired, the program should be linked to the pro‐
       filed version of a library (or to the standard archive  version	if  no
       profiling  version  is  available), instead of the shared object to get
       profile information on the functions of a library. Versions of profiled
       libraries  may  be supplied with the system in the /usr/lib/libp direc‐
       tory. Refer to compiler driver documentation on profiling.

       Consider an extreme case. A profiled program  dynamically  linked  with
       the  shared  C  library spends 100 units of time in some	 libc routine,
       say,  malloc(). Suppose	malloc() is called only from routine  B and  B
       consumes	 only 1 unit of time. Suppose further that routine  A consumes
       10 units of time, more than any other routine in	 the  main  (profiled)
       portion	of  the	 image. In this case,  prof will conclude that most of
       the time is being spent in  A and almost no time is being spent in   B.
       From  this  it  will  be	 almost	 impossible  to tell that the greatest
       improvement can be made by looking at routine  B and  not  routine   A.
       The  value of the profiler in this case is severely degraded; the solu‐
       tion is to use archives as much as possible for profiling.

SunOS 5.11			  25 Aug 2009			       prof(1)
[top]

List of man pages available for OpenIndiana

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net