Run Time Instrumentation report

Note: The RTI profiler output format is subject to change at any time and with no prior notice. Therefore, do not rely on the specific layout or content of the output as described below in building any post-processing tooling that uses the RTI profiler output.
The output of the RTI Profiler is a text file split into the following sections:
  1. RTI options section
  2. Module info section
  3. Summary report section
  4. Sampling tables section
  5. Module locations section
  6. Report Totals section

RTI options section

The RTI options section displays the default RTI configuration. These options are fixed and cannot be changed. For example:


*********************************************************************************
* RTI options                                               2020/03/02 14:23:04 *
*********************************************************************************
SCALING-FACTOR=0000500000                                                       
ANALYSIS-MODE=1, PDF-MODE=0, VERBOSE=0                                          
BUF-SIZE=0000001024, #BUFS=0000000004, TIMER-INTERVAL=0000000050
********************************************************************************    

Module info section

Detailed module information is displayed next. This information includes the module name (specified by MJNAME), address, and length and other information on the content of the module. For example:


********************************************************************************
* Module Info                                                                  *
********************************************************************************   
QUERYING MODULE INFO: ADDR=X'26EA5154'                                          
CSVQUERY: RC=00, VALID=X'573C0800'                                              
MJNAME=COBMOD                                                                
EPTKN=X'000003B703E8003B'                                                       
EPA=X'26EA4C48'                                                                 
EXTENT=X'0001', ADDR=X'26EA4C48', LEN=X'000013B8'                               
ATTR1=X'08'                                                                     
ATTR2=X'10'                                                                     
ATTR3=X'C0'                                                                     
XATTR1=X'00'                                                                    
PID=PGMF 
DIAG=X'7F6E4F48'                                                                
MJNAME=COBMOD , EPADDR=X'26EA4C48'                                             
EXTENT=X'0001', ADDR=X'26EA4C48', LEN=X'000013B8'                               
OPENING BINDER INTERFACE                                                        
CLASS=B_TEXT          , SEG=X'0001', LOAD=X'0', OFF=X'00000000', LEN=X'000013B8'
CLASS=B_MAP           , SEG=X'0001', LOAD=X'2', OFF=X'00000000', LEN=X'00000000'
...
SEG=X'0001' => EXTENT=X'0001'
The module info section is followed by a list all the CSECTs and the release and version information for the translator(s) that produced the CSECT. The translator is typically a compiler, optimizer or assembler product. For example:
********************************************************************************
* List of CSECTs processed for module COBMOD                                   *
********************************************************************************
COBMAIN: Enterprise COBOL V4       , VER=42, MOD=00, PID=5655S7100              
                         TYPE=B_TEXT          , OFF=X'00000000', LEN=X'00000988'
                         ADDR=X'26EB6A30'-X'26EB73B7'                           
COBMAIN: Automatic Binary Optimizer, VER=13, MOD=00, PID=5697-AB1 
SUB1: Enterprise COBOL V4       , VER=42, MOD=00, PID=5655S7100
                         TYPE=B_TEXT          , OFF=X'00000670', LEN=X'00000C26'  
                         ADDR=X'26900670'-X'26901295'
CEESTART: HIGH-LEVEL ASSEMBLER      , VER=01, MOD=06, PID=569623400
                         TYPE=B_TEXT          , OFF=X'00001F00', LEN=X'000000B0'
                         ADDR=X'26901F00'-X'26901FAF'
...

Each entry in the CSECT list represents CSECT details in the format:

Module name: Translator name, Major and minor version, mod level, PID

There are also additional data provided, such as CSECT offset (OFF) in the module, length (LEN) of the CSECT, and the loaded address (ADDR) of the CSECT.

Note that some CSECTs may have been translated by more than one product, in which case an additional entry appears one for each translator used. In this example, there are two entries for the CSECT COBMAIN – one for Enterprise COBOL V4 and another for ABO. This indicates that COBMAIN is the ABO optimized version of a program originally compiled by Enterprise COBOL V4.

If no translator name is available then a dash sign (-) is displayed in the translator name field, but the PID of the translator product is always displayed.

Summary report section

A high-level summary report section is displayed next, which includes a summary report by language subsection and a summary report by module subsection. This section is useful for obtaining an overall view of CPU performance without having to drill down into the detailed profiling information per CSECT.

For example:
********************************************************************************
* Summary report                                           2020/03/02 14:23:18 * 
********************************************************************************
* CPU TIME 00:00:56.30                                                         *
********************************************************************************
#TOTAL SAMPLES=0000000000012450, #MAPPED SAMPLES=0000000000011946
********************************************************************************
* Summary report by language                                                   *
********************************************************************************
Language         |  Number Of Samples |  % TOTAL                                  
 COBOL           |             32724  |   ( 100.00% )                             
    Application  |                12  |   (   0.03% )                             
    LE           |             32712  |   (  99.96% )                             
 PLI             |                 0  |   (   0.00% )                             
 C/C++           |                 0  |   (   0.00% )                             
 Java            |                 0  |   (   0.00% )      
********************************************************************************
* Summary report by module                                                     *
********************************************************************************
MODULE=COBMOD, EPADDR=X'26B2E8E0', #SAMPLES=0000000000011946, ( 93.55% )
CSECT Name | StartADDR     | Number Of Samples | % of COBMOD | % TOTAL
COBMAIN    |  X'26B954F8'  |             10234 | ( 85.67% )  | ( 82.20% )
SUB1       |  X'26B96D18'  |              1203 | ( 10.07% )  | ( 9.66% )
SUB2       |  X'26B97100'  |               507 | ( 4.24% )   | ( 4.07% )
RICHK      |  X'26B81B28'  |                 2 | ( 0.02% )   | ( 0.02% )
MODULE=IGZCPAC, EPADDR=X'27239318', #SAMPLES=0000000000000430, ( 3.45% )
CSECT Name | StartADDR      | Number Of Samples | % of IGZCPAC  | % TOTAL
IGZCXDI    |  X'27196F78'   |               267 | ( 62.09% )    |  ( 1.87% ) 
IGZCXMU    |  X'272411B0'   |               163 | ( 37.91% )    |  ( 1.33% )
MODULE=MODC, EPADDR=X'270FCA30', #SAMPLES=0000000000000074, ( 0.59% )
********************************************************************************

RTI reports the CPU time of a program it running with after the words CPU TIME in format hh:mm:ss.th

All numeric values in the profiling report are displayed in either decimal or hexadecimal. All hexadecimal values in the profiling output are indicated by wrapping the number in the X` ` notation. If the value is not wrapped in the X` `notation, then it is in a decimal representation. All the samples values in the profiling report are in decimal.

A larger number of samples attributed to a particular module or CSECT means a higher relative amount of CPU time is spent in these parts of the application when it ran.

The percentage values provided per module (for example, 93.55% for MODULE=COBMOD) are the total number of samples found for this module out of the overall TOTAL SAMPLES.

The percentage values provided per CSECT (for example, 62.09% for CSECT IGZCXDI) are the number of samples found for this CSECT out of the overall SAMPLES found for only the particular module where this CSECT is contained (MODULE=IGZCPAC in this case).

Note that it is normal and expected to see CSECT names starting with the RI prefix (such as RICHK in this example) in the profiling report. These RI* CSECTs are part of the RTI program modules bound into the modules using RTIBIND and they are used to manage the profiling and report collection. The samples attributed to these RI* CSECTs will be very low as the profiling overhead using the RTI profiler is negligible.

Sampling tables section

This next section provides a detailed per CSECT breakdown that shows the samples attributed to the CSECT offsets.

A samples count is shown for an offset if at least one sample was attributed to this offset. The offsets are sorted in increasing order and match those found in the compiler or optimizer listing file.

For example:
********************************************************************************
* Sampling tables                                                              *
********************************************************************************
MODULE=IGZCPAC , EXTENT=X'0001', #SAMPLES=0000000000000430                      
CSECT=IGZCXDI, #SAMPLES=0000000000000267                  
TABLE=X'26D970B0'                                                               
SIZE=X'00000048', ALIGN=X'00000002', #ENTRIES=0000000082                        
  Offset          | Number Of Samples |                                            
   X'00000000'    |                25 |                                            
   X'00000028'    |                10 |                                            
   X'0000002C'    |                 3 |                                            
   X'0000002E'    |                12 |                                            
   X'00000032'    |                38 |                                            
   X'00000040'    |                 8 |                                            
   X'00000048'    |                32 |                                            
...
MODULE=COBMOD , EXTENT=X'0001', #SAMPLES=0000000000011946
CSECT=COBMAIN, #SAMPLES=0000000000010234                  
TABLE=X'26EB51A0'                                         
SIZE=X'00000077', ALIGN=X'00000002', #ENTRIES=0000000006  
  Offset          | Number Of Samples |                      
   X'000004E2'    |                 1 |                      
   X'000004EC'    |                 1 |                      
   X'000004F8'    |                 2 |                      
   X'00000506'    |               121 |                      
   X'0000050C'    |               411 |                      
   X'0000051A'    |               234 |  
   X'0000051E'    |                34 |
... 

Module locations section

For each module profiled by RTI, this section provides information about the module locations. Such as, the module entry point address, followed by the name of the data set from which the module was loaded for execution, followed by the volume serial number where the data set is located.

For example:
********************************************************************************
* Module locations                                                             *
********************************************************************************
Module   | EPADDR      | DSNAME                                       | VOLSER  
IGZCPAC  | X'26B2E8E0' | SYS2.CEEZ220.SCEERUN                         | SYS004  
IGZXLPKA | X'27239318' | SYS2.CEEZ220.SCEERUN                         | SYS004  
IGZOLPA  | X'2710C390' | N/A                                          | N/A  
COBMOD   | X'270FCA30' | USER1.OPTLOAD3                               | PROD79  
COBOL1   | X'27105000' | USER1.INLOAD                                 | TEST0A  
********************************************************************************

The STEPLIB data set concatenation is searched first for the module location. If not found in the STEPLIB, then the JOBLIB data set concatenation is searched. If the module is not found in these concatenations, then its data set and volume names are marked as N/A (not available).

Report totals section

At the bottom of the RTI report, the sum totals for the internal state used to store and process the RTI data are displayed.

This portion of the output does not normally need to be examined and is used for IBM diagnostic purposes only. For example:
List=0000004192 bytes, ListEntry=0000032053 bytes              
SamplingTable=0001101276 bytes, SamplingEntry=0000028080 bytes 
#ListEntries=0000000517, #SamplingEntries=0000001404           
RIBuffers=0004194304 bytes