Chapter 5. Collecting Data on Machine Resource Usage

This chapter describes how to collect machine resource usage data using the SpeedShop ssusage(1) command. Finding out the machine resources that your program uses can help you identify performance bottlenecks and determine which performance experiments you need to run. You can use the list in “Gathering and Analyzing Performance Data” in Chapter 1, to identify which experiments to run, based on the results of running ssusage on your program.

ssusage Syntax

The ssusage command has no options of its own. It takes the following form:

ssusage executable_name [executable_args]
  • executable_name: name of the executable for which you want to collect machine resource usage data.

  • executable_args: arguments to your executable, if any

ssusage Results

The ssusage command prints output to stderr . For example, the ssusage generic command provides output similar to the following:

...
22.03 real, 18.18 user, 0.21 sys, 7 majf, 120 minf, 0 sw, 241 rb, 0
wb, 135 vcx, 648 icx, 976 mxrss

The last two lines of the output constitute the machine resource usage information that ssusage provides. Following is a description of each field from the report:

  • real: the real, or wall-clock, time in which the executable ran, in seconds.

  • user: user CPU time, excluding the time the operating system was performing services for the executable, in seconds.

  • sys: system CPU time, during which the system was performing services for the executable, in seconds.

  • majf: major page faults that cause physical I/O.

  • minf: minor page faults that require mapping only.

  • sw: process swaps.

  • rb/wb: physical blocks read or written. These are attributed to the process that first requests a block, but they do not necessarily directly correlate with the process's own I/O operations.

  • vcx: voluntary context switches; those caused by the process's own actions.

  • icx: involuntary context switches; those caused by the scheduler.

  • mxrss: maximum resident set size of the program, including any shared pages, in kilobytes.

If the program terminates abnormally, a message is printed before the usage line.