Sun Studio 12: Performance Analyzer

Metric Lists

Many of the er_print commands use a list of metric keywords. The syntax of the list is:


metric-keyword-1[:metric-keyword2…]

For dynamic metrics, those based on measured data, a metric keyword consists of three parts: a metric flavor string, a metric visibility string, and a metric name string. These are joined with no spaces, as follows.


flavorvisibilityname

For static metrics, those based on the static properties of the load objects in the experiment (name, address, and size), a metric keyword consists of a metric name, optionally preceded by a metric visibility string, joined with no spaces:


[visibility]name

The metric flavor and metric visibility strings are composed of flavor and visibility characters.

The allowed metric flavor characters are given in Table 6–1. A metric keyword that contains more than one flavor character is expanded into a list of metric keywords. For example, ie.user is expanded into i.user:e.user.

Table 6–1 Metric Flavor Characters

Character 

Description 

e

Show exclusive metric value 

i

Show inclusive metric value 

a

Show attributed metric value (for callers-callees metric only) 

Show dynamic metric value (for data-derived metrics only) 

The allowed metric visibility characters are given in Table 6–2. The order of the visibility characters in the visibility string does not matter: it does not affect the order in which the corresponding metrics are displayed. For example, both i%.user and i.%user are interpreted as i.user:i%user .

Metrics that differ only in the visibility are always displayed together in the standard order. If two metric keywords that differ only in the visibility are separated by some other keywords, the metrics appear in the standard order at the position of the first of the two metrics.

Table 6–2 Metric Visibility Characters

Character 

Description 

.

Show metric as a time. Applies to timing metrics and hardware counter metrics that measure cycle counts. Interpreted as “+” for other metrics.

%

Show metric as a percentage of the total program metric. For attributed metrics in the callers-callees list, show metric as a percentage of the inclusive metric for the selected function. 

+

Show metric as an absolute value. For hardware counters, this value is the event count. Interpreted as a “.” for timing metrics.

!

Do not show any metric value. Cannot be used in combination with other visibility characters. 

When both flavor and visibility strings have more than one character, the flavor is expanded first. Thus ie.%user is expanded to i.%user:e.%user, which is then interpreted as i.user:i%user:e.user:e%user .

For static metrics, the visibility characters period (.), plus (+), and percent sign (%), are equivalent for the purposes of defining the sort order. Thus sort i%user, sort i.user, and sort i+user all mean that the Analyzer should sort by inclusive user CPU time if it is visible in any form, and sort i!user means the Analyzer should sort by inclusive user CPU time, whether or not it is visible.

You can use the visibility character exclamation point (!) to override the built-in visibility defaults for each flavor of metric.

If the same metric appears multiple times in the metric list, only the first appearance is processed and subsequent appearances are ignored. If the named metric is not on the list, it is appended to the list.

Table 6–3 lists the available er_print metric name strings for timing metrics, synchronization delay metrics, memory allocation metrics, MPI tracing metrics, and the two common hardware counter metrics. For other hardware counter metrics, the metric name string is the same as the counter name. You can get a list of all the available metric name strings for the loaded experiments with the metric_list command. A list of counter names can be obtained by using the collect command with no arguments. See Hardware Counter Overflow Profiling Data for more information on hardware counters.

Table 6–3 Metric Name Strings

Category 

String 

Description 

Timing metrics 

user

User CPU time 

 

wall

Wall-clock time 

 

total

Total LWP time 

 

system

System CPU time 

 

wait

CPU wait time 

 

ulock

User lock time 

 

text

Text-page fault time 

 

data

Data-page fault time 

 

owait

Other wait time 

Synchronization delay metrics 

sync

Synchronization wait time 

 

syncn

Synchronization wait count 

MPI tracing metrics 

mpitime

Time spent in MPI calls 

 

mpisend

Number of MPI send operations 

 

mpibytessent

Number of bytes sent in MPI send operations 

 

mpireceive

Number of MPI receive operations 

 

mpibytesrecv

Number of bytes received in MPI receive operations 

 

mpiother

Number of calls to other MPI functions 

Memory allocation metrics 

alloc

Number of allocations 

 

balloc

Bytes allocated 

 

leak

Number of leaks 

 

bleak

Bytes leaked 

Hardware counter overflow metrics 

cycles

CPU cycles 

 

insts

Instructions issued 

Thread Analyzer metrics 

raccesses

Data race accesses 

 

deadlocks

Deadlocks 

In addition to the name strings listed in Table 6–3, two name strings can only be used in default metrics lists. These are hwc, which matches any hardware counter name, and any, which matches any metric name string. Also note that cycles and insts are common to SPARC® platforms and x86 platforms, but other flavors also exist that are architecture-specific. To list all available counters, use the collect command with no arguments.

To see the metrics available from the experiments you have loaded, use the metric_list command.