Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ prof(1) — 4D1 2.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

monitor(3)

profil(2)

pixie(2)

cc(1)

pc(1)

f77(1)

as(1)






























































     Page 1                                        (last mod. 8/20/87)





     PROF(1)                                                   PROF(1)



     NAME
          prof - analyze profile data

     SYNOPSIS
          prof [ options ] [ prog_name [ pcsampling_data_file ... ] ]
          prof -pixie [ options ] [ prog_name [ bbaddrs_file [
          bbcounts_file ... ] ] ]

     DESCRIPTION
          prof analyzes one or more data files generated by the MIPS
          compiler's execution-profiling system and produces a
          listing.  prof can also combine those data files or produce
          a feedback file that lets the optimizer take into account
          the program's runtime behavior during a subsequent
          compilation.  Profiling is a three-step process: first
          compile the program, then execute it, and finally run prof
          to analyze the data.

          The compiler system provides two kinds of profiling:

          1.  pc-sampling interrupts the program periodically,
          recording the value of the program counter.

          2.  basic-block counting divides the program into blocks
          delimited by labels, jump instructions, and branch
          instructions. It counts the number of times each block
          executes. This provides more detailed (line by line)
          information than pc-sampling.

          Using pc-sampling

          To use pc-sampling, compile your program with the option -p
          (strictly speaking, it is sufficient to use this option only
          when linking the program.) Then run the program, which
          allocates extra memory to hold the profile data, and
          (provided the program terminates normally or calls exit(2))
          records the data in a file at the end of execution.

          The environment variable PROFDIR determines the name of the
          pc-sampling data file and determines whether pc-sampling
          takes place:  if it is not set, the pc-sampling data file is
          named "mon.out"; if it is set to the empty string, no
          profiling occurs; if it is set to a non-empty string, the
          file is named "string/pid.progname," where "pid" is the
          process id of the executing program and "progname" is the
          program's name, as it appears in argv[0]. The subdirectory
          "string" must already exist.

          After running your program, use prof to analyze the pc-
          sampling data file.

          For example:



     Page 1                                        (last mod. 8/20/87)





     PROF(1)                                                   PROF(1)



               cc -c myprog.c
               cc -p -o myprog myprog.o
               myprog              (generates "mon.out")
               prof myprog mon.out

          When you use prof for pc-sampling, the program name defaults
          to a.out and the pc-sampling data file name defaults to
          mon.out; if you specify more than one pc-sampling data file,
          prof reports the sum of the data.

          Using basic-block counting

          To use basic-block counting, compile your program without
          the option -p.  Use pixie(1) to translate your program into
          a profiling version and generate a file, whose name ends in
          ".Addrs", containing block addresses. Then run the profiling
          version, which (assuming the program terminates normally or
          calls exit(2)) will generate a file, whose name ends in
          ".Counts", containing block counts.  Then use prof with the
          -pixie option to analyze the bbaddrs and bbcounts files.
          Notice that you must tell prof the name of your original
          program, not the name of the profiling version.

          For example:

               cc -c myprog.c
               cc -o myprog myprog.o
               pixie -o myprog.pixie myprog  (generates "myprog.Addrs")
               myprog.pixie             (generates "myprog.Counts")
               prof -pixie myprog myprog.Addrs myprog.Counts

          When you use prof with the -pixie option, the program name
          defaults to a.out, the bbaddrs file name defaults to
          "program_name.Addrs", and the bbcounts file name defaults to
          "program_name.Counts". If you specify more than one bbcounts
          file (never specify more than one bbaddrs file), prof
          reports the sum of the data.

          Options to prof

          For each prof option, you need type only enough of the name
          to distinguish it from the other options (usually the first
          character is sufficient).  Unless otherwise noted, each part
          of the listing operates only on the set of procedures that
          results from the combination of the -exclude and -only
          options.

          If the options you specify would neither produce a listing
          nor generate a file, prof uses -procedures plus -heavy by
          default.

          -pixie



     Page 2                                        (last mod. 8/20/87)





     PROF(1)                                                   PROF(1)



               Selects pixie mode, as opposed to pc-sampling mode.

          -procedures
               Reports time spent per procedure (using data obtained
               from pc-sampling or basic-block counting; the listing
               tells which one).  For basic-block counting, this
               option also reports the number of invocations per
               procedure.

          -heavy
               Reports the most heavily used lines in descending order
               of use (requires basic-block counting).

          -lines
               Like -heavy, but gives the lines in order of
               occurrence.

          -invocations
               For each procedure, reports how many times the
               procedure was invoked from each of its possible callers
               (requires basic-block counting).  For this listing, the
               -exclude and -only options apply to callees, but not to
               callers.

          -zero
               Prints a list of procedures that were never invoked
               (requires basic-block counting).

          -testcoverage
               Reports all lines that never executed (requires basic-
               block counting).

          -feedback filename
               Produces a file with information that the compiler
               system can use to decide what parts of the program will
               benefit most from global optimization and what parts
               will benefit most from in-line procedure substitution
               (requires basic-block counting). See umerge(1) and
               uopt(1).

          -merge filename
               Sums the pc-sampling data files (or, in pixie mode, the
               bbcounts files) and writes the result into a new file
               with the specified name. The -only and -exclude options
               have no affect on the merged data.

          -only procedure_name
               If you use one or more -only options, the profile
               listing includes only the named procedures, rather than
               the entire program. If any option uses an uppercase "O"
               for "Only," prof uses only the named procedures, rather
               than the entire program, as the base upon which it



     Page 3                                        (last mod. 8/20/87)





     PROF(1)                                                   PROF(1)



               calculates percentages.

          -exclude procedure_name
               If you use one or more -exclude options, the profiler
               omits the specified procedure and its descendents from
               the listing. If any option uses an uppercase "E" for
               "Exclude," prof also omits that procedure from the base
               upon which it calculates percentages.

          -clock megahertz
               Alters the appropriate parts of the listing to reflect
               the clock speed of the CPU. If you do not specify
               megahertz, it defaults to "8.0".

          -quit n
               Truncates the -procedures and -heavy listings. It can
               truncate after n lines (if n is an integer), after the
               first entry that represents less than n percent of the
               total (if n is followed immediately by a "%"
               character), or after enough entries have been printed
               to account for n percent of the total (if n is followed
               immediately by "cum%").  For example, "-quit 15"
               truncates each part of the listing after 15 lines of
               text, "-quit 15%" truncates each part after the first
               line that represents less than 15 percent of the whole,
               and "-quit 15cum%" truncates each part after the line
               that brought the cumulative percentage above 15
               percent.


     FILES
          crt0.o       normal startup code
          mcrt0.o      startup code for pc-sampling
          libprof1.a   library for pc-sampling
          mon.out      default pc-sampling data file

     SEE ALSO
          monitor(3), profil(2), pixie(2), cc(1), pc(1), f77(1),
          as(1), The MIPS Languages Programmer's Guide.

     FEATURES
          Provided you do not use -pixie, prof processes "mon.out"
          files produced by earlier versions of the compiler system
          using the obsolete -p2 or -p3 options.

     BUGS
          Prof does not yet take into account interactions among
          floating-point instructions.

     ORIGIN
          MIPS Computer Systems




     Page 4                                        (last mod. 8/20/87)



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026