Analyzer Command
Generates performance or coverage histograms. A number of
different kinds of data can be plotted along the horizontal axis
and a variety of data domains can be partitioned into buckets
along the vertical axis to form the histogram.
Format
PLOT [nodespec [,nodespec...]]
1 – Parameters
nodespec
Specifies a program location. Node specifications (nodespecs)
on PLOT and TABULATE commands define how the vertical axis of a
histogram or table is partitioned into buckets. For example, the
node specification PROGRAM_ADDRESS BY ROUTINE selects the program
address domain, the domain of all possible program addresses.
From this domain, it selects the address ranges of the routines
in the program. Each of these address ranges defines a bucket.
See HELP Nodespecs for information about node specifications.
2 – Description
The PLOT command generates performance or coverage histograms.
When you enter a PLOT command, you must specify two things: the
kinds of data to tally, and how to partition the histogram. These
two things define the meanings of the horizontal and vertical
axes of the histogram. What kind of data to tally is specified
with a data-kind qualifier (see qualifier list).
Each histogram is partitioned into buckets representing value
ranges. Each data point in the data file is tallied in the bucket
whose value range includes the value of the data point.
Every PLOT command requires one qualifier from the data kind and
the sorting categories to generate a histogram. If you do not
specify one qualifier from each category, a default qualifier is
used. If your PLOT command has one or more node specifications,
the qualifier defaults are taken from the SET PLOT defaults.
If your PLOT command does not have a node specification, all
qualifier and node specification defaults are taken from the
previous PLOT or TABULATE command you entered.
The TABULATE command displays the same information as the PLOT
command, but in the form of tables instead of histograms.
3 – Data-kind qualifiers
3.1 /ANC
Has the same effect as /NONCOVERAGE, except that every acceptably
non-covered (ANC) bucket has the ANC label placed in the
percentage column.
3.2 /COUNTERS
Tallies exact execution count data along the horizontal axis. To
use this qualifier, you must have collected execution counts with
the SET COUNTERS command.
3.3 /COVERAGE
Tallies test coverage data along the horizontal axis. Every
program unit that is covered (executed at least once) gets a
full-length histogram bar. To use this qualifier, you must have
collected test coverage or execution counts data with the SET
COVERAGE or SET COUNTERS command.
3.4 /CPU_SAMPLING
Tallies CPU sampling data along the horizontal axis. To use this
qualifier, you must have collected CPU sampling data.
3.5 /FAULT_ADDRESS
Tallies page fault data along the horizontal axis using the
faulting address value to tally each data point. To use this
qualifier, you must have collected page fault data.
3.6 /IO_SERVICES
Tallies the number of I/O system service calls along the
horizontal axis. To use this qualifier, you must have collected
I/O services data.
3.7 /NONCOVERAGE
Tallies test non-coverage data along the horizontal axis. Every
program unit that is not covered (is not executed at least once)
gets a full-length histogram bar. Program units that are covered
do not get histogram bars. To use this qualifier, you must have
collected coverage or execution counts data with the SET COVERAGE
or SET COUNTERS command.
3.8 /PAGE_FAULTS
Tallies page fault data along the horizontal axis using the
program address value to tally each data point. To use this
qualifier, you must have collected page fault data.
3.9 /PC_SAMPLING
Tallies program counter sampling data along the horizontal axis.
To use this qualifier, you must have collected program counter
sampling data.
Note that /PC_SAMPLING is the default data-kind qualifier.
3.10 /PHYSICAL_IO_COUNT
Tallies the total number of physical I/O operations (reads plus
writes) along the horizontal axis. To use this qualifier, you
must have collected I/O services data.
3.11 /READ_COUNT
Tallies the number of physical read operations along the
horizontal axis. To use this qualifier, you must have collected
I/O services data.
3.12 /SERVICES
Tallies the number of system service calls along the horizontal
axis. To use this qualifier, you must have collected system
services data.
3.13 /UNALIGNED
Tallies unaligned access fault data along the horizontal axis
using the program address value to tally each data point. To use
this qualifier, you must have collected unaligned access fault
data.
3.14 /VCOUNTERS
Tallies exact execution count data of vector instructions
along the horizontal axis. To use this qualifier, you must have
collected vector instruction counts.
3.15 /VCPU_SAMPLING
Tallies CPU sampling data along the horizontal axis. To use this
qualifier, you must have collected vector CPU sampling data.
3.16 /VPC_SAMPLING
Tallies program counter sampling data along the horizontal axis.
To use this qualifier, you must have collected vector PC sampling
data.
3.17 /WRITE_COUNT
Tallies the number of physical write operations along the
horizontal axis. To use this qualifier, you must have collected
I/O services data.
4 – Sorting qualifiers
4.1 /ALPHABETICALLY
/ALPHABETICALLY[=n[:m]]
Sorts the histogram alphabetically by label names. If you specify
histogram. If you specify =n:m, only buckets n through m (after
sorting) are retained.
4.2 /ASCENDING
/ASCENDING[=n[:m]]
Sorts the histogram in ascending order by bucket data count
(smallest count first). If you specify =n, only the first n
buckets (after sorting) are retained in the histogram. If you
specify =n:m, only buckets n through m (after sorting) are
retained.
4.3 /DESCENDING
/DESCENDING[=n[:m]]
Sorts the histogram in descending order by bucket data count
(largest count first). If you specify =n, only the first n
buckets (after sorting) are retained in the histogram. If you
specify =n:m, only buckets n through m (after sorting) are
retained.
Note that /DESCENDING is the default sorting qualifier.
4.4 /NOSORT
/NOSORT[=n[:m]]
Specifies that the histogram not be sorted. If you specify =n,
only the first n buckets are retained in the histogram. If you
specify =n:m, only buckets n through m are retained.
5 – Bucket selection qualifiers
5.1 /MAXIMUM
/MAXIMUM=n
/NOMAXIMUM
Determines whether to omit buckets that exceed a maximum
percentage. The /MAXIMUM=n qualifier specifies that buckets whose
percentage exceeds n% should be omitted from the histogram. The
/NOMAXIMUM qualifier specifies that no maximum threshold applies.
Note that /NOMAXIMUM, /NOMINIMUM, and /ZEROS are the default
bucket selection qualifiers.
5.2 /MINIMUM
/MINIMUM=n
/NOMINIMUM
Determines whether to omit buckets that fall below a minimum
percentage. The /MINIMUM=n qualifier specifies that buckets whose
percentage falls below n% should be omitted from the histogram.
The /NOMINIMUM qualifier specifies that no minimum threshold
applies.
Note that /NOMAXIMUM, /NOMINIMUM, and /ZEROS are the default
bucket selection qualifiers.
5.3 /ZEROS
/ZEROS
/NOZEROS
Determines whether zero data count buckets are omitted from
the histogram. The /NOZEROS qualifier specifies that buckets
with zero data counts be omitted from the histogram. Thus, the
histogram becomes smaller since buckets without data are dropped.
The /ZEROS qualifier retains buckets with zero data counts.
Note that /NOMAXIMUM, /NOMINIMUM, and /ZEROS are the default
bucket selection qualifiers.
6 – Source code display qualifiers
6.1 /SOURCE
/SOURCE
/NOSOURCE
Determines whether source text is shown next to the histogram
bars. The /SOURCE qualifier specifies to display source code
in histograms generated with BY LINE or BY CODEPATH node
specifications. The /NOSOURCE qualifier specifies that source
text not be displayed.
Note that /SOURCE is the default source code display qualifier.
7 – Program address selection qualifiers
7.1 /CUMULATIVE
/CUMULATIVE[=n]
/NOCUMULATIVE
Tallies all stack PC values for each data point in the histogram.
Thus, each bucket shows how much time or other resource is
spent in the corresponding program unit and all program units
it calls. The /CUMULATIVE qualifier has no effect if you are
not plotting against the program address domain. To use the
/CUMULATIVE qualifier, you must have collected stack PC values in
the Collector. You may specify an integer to cuase only the first
"n" routines down the stack to be used. If used with /STACK_
DEPTH=m, the Analyzer will charge the data point to all calls (or
"n" calls for /CUMULATIVE=n) below the specified depth.
The /NOCUMULATIVE qualifier tallies only the original program
counter value for each data point.
Note that /NOCUMULATIVE, /NOMAIN_IMAGE and /NOSTACK_DEPTH are the
default program address selection qualifiers.
7.2 /MAIN_IMAGE
/MAIN_IMAGE[=n[:m]]
/MAIN_IMAGE[=prog-unit]
Specifies to use the first call stack PC value that falls in your
program's main image, when tallying program addresses. You may
specify the PC value to be n or the range n:m. If you specify a
program unit or address range, it will select the first PC value
in that address. The /NOMAIN_IMAGE qualifier specifies to use the
original program counter value for each data point, to tally the
data point.
Note that /NOCUMULATIVE, /NOMAIN_IMAGE and /NOSTACK_DEPTH are the
default program address selection qualifiers.
7.3 /STACK_DEPTH
/STACK_DEPTH=n
/NOSTACK_DEPTH
Determines whether the Analyzer will climb the call stack to
determine the PC values.
Note that /NOCUMULATIVE, /NOMAIN_IMAGE and /NOSTACK_DEPTH are the
default program address selection qualifiers.
8 – Design qualifiers
8.1 /FILL
/FILL=("*","O","x","@",":","#","/","+")
Specifies the fill to be used for the first, second, etc., data
kind in a plot. A maximum of eight character strings can be
defined, and each must be delimited by double or single quotation
marks.
Note that /FILL=("*","O","x","@",":","#","/","+"), /NOSCALE and
/NOWRAP are the default design qualifiers.
8.2 /SCALE
/SCALE=n
/NOSCALE
Determines whether fixed or adjusted histogram scale is used.
The /SCALE=n qualifier allows you to select a fixed scale for the
plot. The /NOSCALE default qualifier selects adjusted scaling,
which causes the longest bar on the histogram to occupy the full
width of the plot.
Note that /FILL=("*","O","x","@",":","#","/","+"), /NOSCALE and
/NOWRAP are the default design qualifiers.
8.3 /WRAP
/WRAP
/NOWRAP
Specifies to wrap PLOT output that is too long. /NOWRAP specifies
to truncate PLOT output that is too long.
Note that /FILL=("*","O","x","@",":","#","/","+"), /NOSCALE and
/NOWRAP are the default design qualifiers.
9 – Tasking qualifiers
9.1 /CREATOR_PC
/CREATOR_PC
/NOCREATOR_PC
Charges a data point to the location in the program that created
the task, rather than to the PC value of the measurement. This
qualifier can only be used when the PROGRAM_ADDRESS domain is in
effect, and when TASKING data has been collected. It overrides
/MAIN_IMAGE, STACK_DEPTH and /CUMULATIVE.
9.2 /PARENT_TASK
/PARENT_TASK
/NOPARENT_TASK
Charges a data point to the parent of the current task, rather
than to the current task. It can only be used when the TASK or
the TASK_TYPE domain is in effect, and when TASKING data has been
collected.
9.3 /TASK_SWITCH
Represents the number of times there was a task context switch.
It may be applied to the following domains: TIME BY n MSECs,
TASK, TASK_PRIORITY, and TASK_TYPE. This qualifier will only
work with the TIME, TASK, TASK_PRIORITY, and TASK_TYPE filter
specifications.
10 – CALL TREE domain qualifiers
10.1 /CHAIN_NAME
/CHAIN_NAME
/NOCHAIN_NAME
Specifies to use the comma list form of presentation on the plot
for call trees. /NOCHAIN_NAME specifies to use the indentation
form. If you specify /NOCHAIN_NAME, then the PLOT command's
maximum and mininum sorting qualifiers are not in effect. If
you specify /CHAIN_NAME, then /NOZEROS is in effect.
Note that /NOCHAIN_NAME and /NOPATHNAME are the default CALL_TREE
domain qualifiers.
10.2 /PATHNAME
/PATHNAME
/NOPATHNAME
Specifies to use full pathnames for each routine name in the
plot. /NOPATHNAME specifies to use unqualified routine names.
Note that /NOCHAIN_NAME and /NOPATHNAME are the default CALL_TREE
domain qualifiers.
Note that if you do not specify one qualifier from each category,
a default qualifier is used. If your PLOT command has one or
more node specifications, the qualifier defaults are taken from
the SET PLOT defaults. If your PLOT command does not have a node
specification, all qualifier and node specification defaults are
taken from the last PLOT or TABULATE command you entered.
11 – Default qualifiers
11.1 /DEFAULT
Specifies that all default qualifiers and node specifications be
taken from the SET PLOT defaults instead of from the currently
active plot.
12 – Examples
PCAA> PLOT PROGRAM BY MODULE
Program counter sampling data is plotted by default. The
vertical axis has one histogram bar for each module in
the program. It also has one bar for each shareable image
used. Each bar indicates how much time is consumed in the
corresponding program unit.
PCAA> PLOT/PAGE_FAULTS/SOURCE MODULE FOO BY LINE
The histogram has one bar for each line in module FOO of the
user program. The length of each histogram bar is proportional
to the number of page faults that occurred at the corresponding
line. Because the /SOURCE qualifier is present, the text of
each source line is shown next to the histogram bar for that
line.
PCAA> PLOT/NONCOVERAGE/SOURCE MODULE FOO BY CODEPATH
The histogram has one bucket for each codepath in module FOO.
Any codepath that is not covered has a full-length histogram
bar. Thus, the histogram highlights code that is not tested.
The text of each source line is shown next to the corresponding
codepaths.
PCAA> PLOT/IO_SERVICES/MAIN_IMAGE PROGRAM BY ROUTINE
The number of I/O system service calls is plotted along the
horizontal axis. The routines of the program are plotted along
the vertical axis. I/O data originating in shareable images
(such as the Run-Time Library) are charged back to the routines
in the main image (the user program) that called the shareable
images to cause I/O.
PCAA> PLOT/SERVICES/DESCENDING/NOZEROS SYSTEM_SERVICES BY SERVICE
The names of the OpenVMS system services are plotted along the
vertical axis. The number of calls on each system service is
plotted along the horizontal axis. The histogram is sorted so
that the most frequently used services are listed first. All
system services that were never called are omitted from the
histogram.
PCAA> PLOT/PHYSICAL_IO_COUNTS FILE_NAME BY FILE
The names of the RMS files opened or created by the program are
plotted along the vertical axis of the histogram. The number
of physical I/O operations for each file is plotted along the
horizontal axis.
PCAA> PLOT/VCOUNTERS INSTRUCTION BY VOPCODE
This command causes the report view to be based on the
disassembled opcode for each vector instruction in the
entire application that is sampled. The number of times a
vector instruction is used lets you see if your application
is spending a lot of time performing certain operations.
For example, if you see that the SYNC vector instruction
is executed more than any other vector instruction, you can
infer that the scalar processor is spending too much idle time
waiting for the vector processor to finish an operation.