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.