dcpiwhatcg - Where Have All The Cycles Gone (for an image)
dcpiwhatcg [<options>] image-file [image-file
Given one or more image-files and some profile files, dcpiwhatcg identifies
what percent of the CYCLES samples that were spent executing instructions vs.
waiting for stalls of various categories. The output 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
In addition, dcpiwhatcg optionally outputs a sorted list of the procedures
that contain samples blamed on a particular kind of stall, for example, "Branch
Note: This command can only be used on aggregate (versus
- 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.
FREQUENCY AND STALL ANALYSIS FLAGS
The following options can be used to control the heuristics for estimating
execution frequencies 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 optimistic.)
- Use a (non-linear time) constraint solver to exploit global flow
constraints when estimating execution frequencies. The frequency estimates
may still violate flow constraints.
PROFILE FILE 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. That is, the named directory should contain a set
of epochs. If this option is not specified, the directory name is obtained
from the DCPIDB logical name. If neither of these methods succeeds
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 last epoch if "-epoch latest-2" is specified.
- -epoch all
- Search for profile files in all epochs.
- -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 February 4, 2002 at 23:34 is named 200202042334. 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
- -events all
- Search for profile files corresponding to all event types such as
cycles, icache misses, branch mispredictions, etc. This is the default.
- -events type(+type)*
- Search for profiles files for the specified event types. For example,
search for cycles, icache misses, and data cache misses when the option
-events cycles+imiss+dmiss is specified.
- -events all(-type)*
- Search for profile files for all event types except for the specified
types. For example, search for all event types except for branch
mispredictions when the option -events all-branchmp is specified.
- -label <label>
- Search for profile files with the specified label (see
dcpilabel). If no labels are specified on the command line, profile
file labels are ignored entirely. If any labels are specified on the command
line (this option can be repeated several times), 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 either the automatic profile lookup
mechanism, or explicitly name the profile file with the -profile
option, but not both.)
Because an internal HP 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 files.
This command can only be used on aggregate (versus ProfileMe) data.
dcpid(1), dcpidiff(1), dcpiformat(4), dcpilist(1),
For more information, see the HP Digital Continuous Profiling Infrastructure
project home page
Last modified: April 8, 2004