dcpiwhatcg - Where Have All The Cycles Gone (on Alpha 21064/EV4 and
dcpiwhatcg [<flags>] image-file [image-file ...]
Given one or more image-files and some profile files, dcpiwhatcg
identifies what percent of the CYCLES samples were spent executing
instructions vs. waiting for stalls of various categories. The output format
is the same as the procedure-level output of
dcpicalc(1), except that it covers all of the procedures in the
image-files rather than a single procedure. See
dcpicalc(1) for a detailed discussion on interpreting the output.
In addition, dcpiwhatcg optionally outputs a sorted list of the
procedures that contain samples blamed on a particular kind of stall, e.g.,
- Print information about options.
- Print a progress report line before analyzing each procedure.
- -stall stall-kind
- Output a sorted list of the procedures that contain samples
blamed on stall-kind. Stall-kind must be the name of a specific
dynamic or static stall as listed in the "Where have all the cycles
gone?" output of dcpiwhatcg or
dcpicalc(1). This option does not work for multiple image-files.
- Print program version information.
EXECUTION COUNT AND STALL ANALYSIS FLAGS
The following options can be used to control the heuristics for estimating
execution counts and identifying the causes of stalls.
- Generate low, medium, and high confidence data.
- Generate medium and high confidence data. (default)
- Generate only high confidence data.
- -cross_procedure [optimistic | pessimistic | selective]
- Choose what assumption to make when a procedure call
boundary is encountered while looking for reasons to explain
dynamic stalls. A procedure call boundary is either a call
made by the procedure being analyzed or the beginning or end
of that procedure. With pessimistic, assume that
whatever happens outside the analyzed procedure can cause a
dynamic stall inside it. With optimistic, assume that
it cannot. With selective, the assumption is based on
standard procedure call convention. (The default is
- Use a (non-linear time) constraint solver to exploit
global flow constraints when estimating execution counts.
The estimates may still violate flow constraints.
- -tab foo.tab
- Get execution counts from output of
dcpix(1) instead of making estimates,
which may be inaccurate. Requires a .xct
which may be
- -xct_factor num
- Scales counts from .xct files by num. Useful when you run a program once under dcpix(1) but multiple (num) times under dcpid(1) to get more samples. Used in conjunction with -tab and -xct.
PROFILE SELECTION FLAGS
By default, this command automatically finds all of the relevant profile
files. The following options can be used to guide the search for the profile
- -db <directory name>
- Search for profile files in the specified profile database directory.
The directory name should be the same name as the one specified when
dcpid was started. If this option is not specified, the directory name
is obtained from the DCPIDB environment variable. If neither this
option, nor the DCPIDB environment variable are set, the name of
the directory used by the last invocation of dcpid on this machine
is used. If none of these methods succeed in finding the appropriate
directory, and no explicit set of profile files is provided via the
-profiles option, then the command fails.
- -epoch latest
- Search for profile files in the latest epoch. This is the default.
- -epoch latest-k
- Search for profile files in the "k+1"th oldest epoch. For example,
search in the third oldest epoch if -epoch latest-2 is
- -epoch <name>
- Search for profile files in the named epoch. The epoch name should be
the name of a subdirectory corresponding to a single epoch within the
profile database directory. Epoch subdirectory names usually take the
form YYYYMMDDHHMM (year-month-day-hours-minutes). For example,
an epoch started on June 11, 2002 at 22:33 would be named
200206112233. If an epoch is given a symbolic name by creating a
symbol link to the actual epoch directory, then the symbolic name can
also be used as an argument to the -epoch option.
- -epoch all
- Search for profile files in all epochs.
- -ihost <hostnames...> --
- Include just those profile files associated with the
specified host names. The list of host names must be
terminated either via -- or by the end of the option list.
The command prints an error message and fails if both the -ihost
and -ehost options are specified.
- -ehost <hostnames...> --
The list of
-- or by the
end of the
both the -ihost
- -label <label>
- Search for profile files with the specified label(s) (see dcpilabel(1)). This option can be repeated multiple times. If no labels are specified on the command line, profile file labels are ignored entirely. If any labels are specified on the command line, only profile files that have one of the specified labels are used.
- -profiles <file names...> --
- Use just the profile files named by the specified file names. The list of profile file names can be terminated either via --, or by the end of the option list. The command prints an error message and fails if the -profiles option is used in conjunction with any of the earlier automatic profile finding options. (Use the automatic profile lookup mechanism, or explicitly name the profile file with the -profile option; but don't do both.)
PROFILE SORTING FLAGS
- [-s | -st | -sp] statistic
- The named statistic is used to sort the profile output. For -s
or -st, the statistic is assumed to be an aggregate event; for
-sp it is assumed to be a ProfileMe statistic. If this option is
not specified, the output is sorted so that the procedure or image that
accounts for the most cycles is listed first; if the database contains
ProfileMe statistics, the sort key is valid:retdelay, and
otherwise the sort key is cycles. If neither of these
statistics appears in the output, the first column in the output is used
as the sort key. If this option is specified, the statistic specified as
the sort key does not need to be listed explicitly in a -event
or -pm specification; it will be included automatically.
dcpiwhatcg -db db /vmunix
dcpiwhatcg -db db -events cycles /vmunix
dcpiwhatcg -db db -stall "ITB/I-cache miss" myprog
dcpiwhatcg -db db -stall Slotting /vmunix
Dcpiwhatcg works only on Alpha 21064/EV4 and 21164/EV5 processors. For
Alpha 21264a/EV67 and later processors, use insights gained from the
ProfileMe statistics instead.
Because an internal DCPI interface was not designed for whole-program
analysis, the running time of this program is quadratic rather than linear
in size of the image file. Thus, this program runs slowly on large image
For more information, see the DCPI project home page
Hewlett-Packard Company. All rights reserved.