Indexed source performance profiles


Indexing is the optional process of associating the measurement data that Strobe collects in the sample data set with specific line numbers, procedure names, and statements in the application program’s source code. If you do not index your Performance Profile, Strobe will format the reports without source code information (see Unindexed Control Section Subreport).

Being able to refer to specific line numbers and procedure names in the previous section made it easier to interpret the Performance Profile and determine the action necessary to improve performance. To index the Performance Profile, create a map data set (which essentially maps the layout of the compiled source code) and include it when you produce the Performance Profile. You can also use DDIO files created by the language processor. The resulting  Strobe Performance Profile is indexed—the reports in the Performance Profile relate the location of concentrations of CPU activity or wait time to your application’s code statements, procedure names, and line numbers. Because it makes Performance Profiles easier to interpret, we strongly recommend that you create and use DDIO files or map data sets.

As defined earlier, a control section is the smallest unit of execution produced by a compiler or assembler that can be linked or replaced in a load module. When you compile an application program, the compiler creates one or more control sections corresponding to the statements in the source code. The next section describes in greater detail what a Strobe report for unindexed control sections looks like. It then discusses the format of reports for indexed control sections and describes the language-specific rules that govern indexing.

For more explicit instructions on the language-specific options that you need to specify, see Indexed source control sections and in the Using-Strobe-to-measure-online-applications-and-batch-programs.

Important

To ensure that the control section information is complete, you must compile all VisualAge products with the binder option EDIT=YES (the default).

Unindexed control sections

When you do not index source code measured in an application, each line entry details activity within a code block, which is an area with a size (in bytes) that is equal to the report resolution. You can specify the report resolution when you produce the Performance Profile for a non-iStrobe profile. In an unindexed Performance Profile, line number and procedure name fields are blank. The unindexed Program Usage By Procedure report, has the default report resolution (shown in the INTERVAL LENGTH column) of 64 bytes.

Unindexed Control Section Subreport

image2021-2-2_15-49-42.png

The Program Usage by Procedure report combines entries for inactive codeblocks that are adjacent. In this case, the resulting entry covers an area whose size in bytes is greater than the report resolution. This is noted with a dash to the left of the histogram column as shown in the preceding figure. The example has entries with codeblocks of sizes of 1216 and 572 bytes.

You can still use the information in an unindexed report to determine what statements are causing the activity. Follow these steps:

  • Produce a listing of the compilation of the source code that matches exactly the compile options for the program executed. Compile it with the option to produce a procedure map that relates the statement number and text with the offset.
  • In the procedure map section of the listing, look up the statement number and procedure name that contains the offset.
  • Next, look in the source statement section for the exact statement code.

Indexed source control sections

Indexing is a way to speed up your analysis. To index a Performance Profile, you produce a map data set or use a DDIO file. Each procedure comprises one or more consecutive source program statements; the procedure or group of statements is defined according to the rules for the source language.

If a compiler has produced code not associated with any source program statements, indexing assigns a procedure name that suggests the function of the code but leaves the line number field blank.

CPU activity always appears for a range of source lines beginning with the number listed in the line column. For example, if the statements span an area that is less than the report resolution, the activity will be rolled up into the first statement. In the following figure, activity for lines 56 and 57 is combined into line 55. Strobe suppresses partitioning when consecutive areas are inactive. CPU usage is reported for a group of lines beginning at the line number reported, not for the specific line number.

image2021-2-2_15-50-43.png

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*