Appendix G. AB Suite MCP Runtime Performance

Runtime Performance Efficiency — An Overview

The AB Suite Runtime (Online and Reports) supports Object Oriented (OO) behavior with respect to class instances by maintaining a multi dimension table with multiple rows for each class (ispec) instance.

As the online and report execute, they will allocate new class instances on demand and with this comes the potential resizing of the above table as well as other multi dimension tables maintained for Method local variables.

To optimize the efficiency of these array resizes during the online application or report processing, AB Suite MCP Runtime infrastructure adopts a heuristic approach by maintaining the ‘last maximum’ values for the above tables (environment values) for online application and report processing. These values persist in either specific task attributes for a report codefile or within the Linccntl file for the online application. As such users might notice ‘MODIFY’ jobs being processed after the initial execution of reports and possibly at other times. Specific details appear later in this section.

This allows the online and reports to ‘learn’ the environment sizing and perform a more efficient single array resize at startup (retrieving the last known values from the Linccntl file for the online application or the specific task attributes of the report) rather than performing multiple resizes as the online application or report processes.

Prior to End Of Job (EOJ), for both the online application and reports, the AB Suite MCP Runtime infrastructure checks the new environment values and, if these are greater than the existing values, it will initiate a MODIFY of the report codefile for reports and an update of the Linccntl file for the online application (all code libraries will share the same maximum values).

The Linccntl file is recreated for every online deployment which will reset the Linccntl maintained environment values. Subsequent executions of the online application will again learn and then maintain the environment settings.

Similarly, after each report generate, the associated report environment values will be reset and subsequent executions of the report will again learn and then maintain the environment settings.

Runtime Performance Statistics

This section lists the five options available for capturing runtime performance statistics for an AB Suite MCP application.

Following are the options:

Note: While it is possible to use combinations of the above, (For example, 1 and 2 or combinations of 3, 4, and 5) concurrently it is not recommended as each measurement is intended to address specific areas and any combination might cross pollute the statistics.

Cobol85 Source Listing and Cross Reference

This section lists the two options available for the listing and cross reference of the application (online and reports) Cobol85 source.

Following are the options:

Report Runtime Performance

Invoked Methods

This feature enables the runtime statistics capture of all or selective methods invoked by a report, covering segment methods, class or ispec methods and external class methods (library entrypoints).

To capture report method runtime statistics:

  1. Modify the existing Taskstring of NGENxxSYS/BLD utility to include SETMETHODS

    For example, wfl modify (rtuser)ngen28sys/bld on rtpack;taskstring =” SETMETHODS “ — Ensure to retain any existing TASKSTRING text

    - use Cande Lfile (rtuser)ngen28sys/bld on rtpack:PPB to view any current Taskstring value.

  2. All reports generated while the SETMETHODS is present in the BLD taskstring will have runtime method capture enabled.

    Note: Ensure to take backup copies of all reports (<system>/<report>) prior to deploying so that the original version(s) can be easily restored after testing has completed.

  3. The Generate log will inform you if the report method statistics are enabled for the report deployment and a display to the same affect is shown during report execution.

    Example

    During Deployment:

    26/03/17 @ 23:32:06 Report Compiles Started (Server Id 420-8886) [1-J 8431]
    26/03/17 @ 23:32:06 Warning: Method Statistics Enabled 
    26/03/17 @ 23:32:08 Total Units to Compile 3
    26/03/17 @ 23:32:08 Report Units Compiled (DMA) 1(33% Complete)
    

    During Execution:

    23:32:33  8447 MSRDISP14:DISPLAY:** Method Statistics Enabled in CUSTLIST **.

    Note: It is recommended that you revert the BLD taskstring to its prior value immediately after the report deployment is complete.

  4. The report method statistics are written to a CSV file called <system name>/<report name>/TIMINGS/<report mix #>. This file name is also displayed prior to the report EOJ.

    Example

    23:32:33  8447 MSRDISP14:DISPLAY:Timing Summary: SAMPLESYS/CUSTLIST/TIMINGS/08447.
  5. The statistics captured are: Method name, Call Frequency, CPU Secs, CPU Per Call, Pbits, Pbits Per Call and Array Resizes.

  6. Note that the statistics are aggregated per method call. Any processing done directly, or indirectly (For example, another method is invoked), by the method will be included in the method statistics.

  7. When the NGENxxSYS/BLD TASKSTRING is reverted, you should either REBUILD the report(s) or restore the original ‘non-statistics’ version(s).

COBOL85 Runtime Statistics

This feature enables the Cobol85 runtime statistics capture of logic executed by a report, including invoked segment methods and class or ispec methods.

This provides granular level of performance statistics down to the Cobol85 source paragraph level.

 Caution

This potentially compromises database recovery in the event of any runtime failure so an application with this feature enabled must never be executed against a live production database.

To capture Cobol85 runtime report statistics:

  1. Ensure the file (<rt usercode>) NGEN28/ENVIRONMENT/STATS is present on <RT pack>.

    Note: Contact Engineering by raising a Service Request (SR) if the file is not present.

  2. Modify the existing Taskstring of NGENxxSYS/BLD utility to include SETSTATS

    For Example,

    wfl modify (rtuser) ngen28sys/bld on rtpack;taskstring =” SETSTATS“ — Ensure to retain any existing TASKSTRING text

    use Cande Lfile (rtuser)ngen28sys/bld on rtpack:PPB to view any current Taskstring value.

  3. If you want to ensure all report invoked methods are included in the report statistics capture, from CANDE/MARC, remove (<app user>)<app name>/REP_CODE/= on <dict pack>. Else, only the report(s) and any of their invoked methods that are deployed with SETSTATS enabled will have the Cobol85 Statistics enabled.

    Due to the potential volume of statistical information captured, it is recommended that you be as selective as possible of the methods that will have Cobol85 Statistics enabled as part of the report Build.

  4. All reports generated while the SETSTATS is present in the BLD taskstring will have runtime Cobol85 Statistics capture enabled.

  5. The Generate log will inform you if the Cobol85 Statistics are enabled for the report deployment and a display to the same affect will be shown during report execution.

    Example

    During Deployment

    26/03/17 @ 23:32:06 Report Compiles Started (Server Id 420-8886) [1-J 8431]
    26/03/17 @ 23:32:06 Warning: Cobol85 Statistics Enabled
    26/03/17 @ 23:32:08 Total Units to Compile 3                    
    26/03/17 @ 23:32:08 Report Units Compiled (DMA) 1(33% Complete)  
    

    During Execution

    When the report commences, you will be asked to confirm if you want to execute this special version of the report

    23:32:33          1270 MSRDISP14:DISPLAY:** DIAGNOSTIC version ONLY - MUST NOT be used 
    in Production, AX OK or DS **
    .. 

    Additionally, all invoked methods that have been compiled with Cobol85 Statistics enabled will be identified when the report commences:

    23:32:36   1270 DISPLAY:** Cobol85 Statistics File is *BD/01270/000000000000/TASKFILE **.  
    23:32:36   1270 DISPLAY:** Cobol85 Statistics Enabled in CUSTLIST **.           
    23:32:36   1270 DISPLAY:** Cobol85 Statistics Enabled in METHOD1 **.           
    23:32:36   1270 DISPLAY:** Cobol85 Statistics Enabled in CUST_INITIALIZE **.
    
  6. When the report has completed, the Cobol85 Statistics will be available in the above *BD file.

  7. It is recommended that you revert the BLD Taskstring to its prior value immediately after the report deployment is complete.

  8. From CANDE/MARC, REMOVE (<app user>)<app name>/REP_CODE/= on <dict pack>

    Note: This step is critical, if you fail to do this there is the possibility a subsequent report generate might pick up (Bind) one of the method codefiles previously generated with SETSTATS.

  9. Now Rebuild all reports that were previously generated when the BLD SETSTATS taskstring was present.

Online Runtime Performance

Cobol85 Runtime Statistics

This feature enables the Cobol85 runtime statistics capture of logic executed by the online application, including invoked segment methods and class/ispec methods.

This provides granular level of runtime performance statistics down to the Cobol85 source paragraph level.

 Caution

This potentially compromises database recovery in the event of any runtime failure so an application with this feature enabled must never be executed against a live production database.

Note: This is not available for NAP/CAP AB Suite applications.

To capture Cobol85 online runtime statistics:

  1. Ensure the file (<rt usercode>)NGEN28/ENVIRONMENT/STATS is present on <RT pack>.

    Note: Contact Engineering by raising a Service Request (SR) if the file is not present.

  2. Modify the existing Taskstring of NGENxxSYS/BLD utility to include SETSTATS

    For Example,

    wfl modify (rtuser) ngen28sys/bld on rtpack;taskstring =” SETSTATS“ — Ensure to retain any existing TASKSTRING text

    use Cande Lfile (rtuser)ngen28sys/bld on rtpack:PPB to view any current Taskstring value.

  3. Modify the existing Taskstring of (app user)<system>/COMS_LINC_TP to include SETSTATS.

    For example, wfl modify (appuser)mysystem/coms_linc_tp on dictpack;taskstring =” SETSTATS“ — this will ensure the COMSTP links to the special <system>/Environment_Stats.

  4. Copy (<rt usercode>)NGEN28/ENVIRONMENT/STATS as (app user)<system>/ENVIRONMENT_STATS from <rt pack>(pack) to <dict pack>(pack).

  5. The scope of the Cobol85 Statistics is dependent on the methods and ispecs generated as part of the BUILD. A REBUILD will generate and compile everything so Cobol85 Statistics will be enabled for all ispecs, classes, and methods.

    Only those methods or ispecs generated with SETSTATS enabled will have the Cobol85 statistics enabled.

    Due to the potential volume of statistical information captured, it is recommended that you be as selective as possible of the ispecs and methods that will have Cobol85 Statistics enabled as part of the system Build.

    Note: For large applications, a REBUILD might cause an internal Cobol85 compiler limit to be exceeded. If this occurs, be more selective with the actual methods and ispecs needed for analysis and use a BUILD.

  6. The Generate log will inform you if the Cobol85 statistics are enabled for the deployment and a display to the same affect will be shown during report execution.

    Example

    During Deployment

    04/09/17 @ 22:15:20 Validating and converting Client supplied files (Server Id 1401-8886)
    04/09/17 @ 22:15:23 Dasdl Syntax-only Compile Completed                        
    04/09/17 @ 22:15:23 Compiling Programs      Job = 1136
    04/09/17 @ 22:15:23 Warning: Cobol85 Statistics Enabled   
    04/09/17 @ 22:15:23 REBUILD Selected. 
    04/09/17 @ 22:15:28 Total Units to Compile 97       
    

    During Execution

    When the application commences, you will be asked to confirm if you want to execute this special version of the report.

    00:38:01  1759 MSRDISP14:DISPLAY:** DIAGNOSTIC version ONLY - MUST NOT be used  in Production,
    AX OK or DS ** 
    ..
    ..
    

    Additionally all ‘units’ that have been compiled with Cobol85 Statistics enabled will be identified when they, or their owning ../STUB, are first invoked.

    00:38:05   1759 MSRDISP14:DISPLAY:Env: ** Cobol85 Statistics Enabled: (BTEST)RUN8ABSHB/CODE_LIBRARY/000 ON USER **.  .  
    00:38:06  1760 MSRDISP14:DISPLAY:** Cobol85 Statistics File is *BD/01760/000000000000/TASKFILE **. 
    00:38:13  1760 MSRDISP14:DISPLAY:** Cobol85 Statistics Enabled in 
    CLOSEUPDATE **.   
    00:38:13  1760 MSRDISP14:DISPLAY:** Cobol85 Statistics Enabled in 
    CLOSEDOWN **.     
    00:38:13  1760 MSRDISP14:DISPLAY:** Cobol85 Statistics Enabled in 
    METHOD1 **.     
    00:38:13  1760 MSRDISP14:DISPLAY:** Cobol85 Statistics Enabled in MENU **
    00:38:57  1760 MSRDISP14:DISPLAY:** Cobol85 Statistics Enabled in SETUP **
    
  7. It is recommended that you revert the BLD taskstring to its prior value immediately after the report deployment is complete.

  8. Close the application when the testing is complete. Cobol85 statistics will be available in the above *BD file.

  9. Reset the Taskstring of (app user)NGEN28/COMS_LINC_TP to null (or its prior value). For example, wfl modify (app user)mysystem/coms_linc_tp on dictpack;taskstring =”.“

  10. Rebuild the application.

Online Transaction Performance

COMSTP Direct Statistics Capture

This feature enables the COMSTP/Update runtime transaction statistics capture. This feature provides high level performance statistics capture in cases, for example, where a captured population of transactions is applied multiple times and the impact of any user logic or IC changes on TPS (Transactions per Second), CPU/Transaction and so on is compared for improvement or degradation.

This is intended to gauge overall online system transaction performance. Individual transactions types are not identified. These statistics are aggregated for the period per COMSTP/Update and provide a general performance measure of the online application.

Note: This functionality is not available for NAP/CAP AB Suite applications.

To capture the COMSTP/Update online transaction statistics,

  1. Ensure the file (<rt usercode>)NGEN28/COMS_LINC_TP/PERF is present on <RT pack>.

    Note: Contact Engineering by raising a Service Request (SR) if the file is not present.

  2. Backup the current file <system>/COMS_LINC_TP file.

  3. Copy (rt usercode)NGEN28/COMS_LINC_TP/PERF as (app user)<system>/COMS_LINC_TP from <rt pack>(pack) to <dict pack>(pack).

  4. Restart the application.

    A message “Transaction Statistics Capture Version” will be displayed for each COMSTP/Update as it initializes.

  5. Submit the required transactions.

  6. Close the application.

    For each COMSTP/Update a message, “Updating Transaction Statistics File’ will be displayed as each COMSTP/Update waits to update the transaction statistics summary file.

    The transaction statistics summary is written to a file called <system name>/STATISTICS which is a CSV file that might be imported into Excel for analysis.

    Each COMSTP/Update will have an entry in the CSV file, one row per COMSTP/Update.

  7. Restore the original <system>/COMS_LINC_TP and restart the application.

Examiner

Examiner provides sophisticated data collection mechanism to assist in measuring the performance of your built applications.

Examiner enables you to determine,

Examiner provides only the data capture. Data assembly and data reporting must be sourced from appropriate providers.

For more details, refer to Section 8. Diagnostic and Management Utilities > Examiner.

Cobol85 Source Listings and Cross Reference

Listing

This feature enables the generation and retention of the Cobol85 source listings including any ‘INCLUDE’ files.

Perform the following steps to enable the generation and retention of the Cobol85 source listings including any ‘INCLUDE’ files.

  1. Modify the existing Taskstring of NGENxxSYS/BLD utility to include SETLIST

    For example,

    wfl modify (rtuser)ngen28sys/bld on rtpack;taskstring =” SETLIST “ — Ensure to retain any existing TASKSTRING text

    use Cande Lfile (rtuser)ngen28sys/bld on rtpack:PPB to view any current Taskstring value

  2. All units (ispecs, methods, reports) generated while the SETLIST is present in the BLD taskstring will have Cobol85 compiler listings generated. The Cobol85 compiler listing will be created as a *BD file for the NGEN 28SYS/BLD job number.

    Note: You should only attempt this for a discrete number of ispecs/methods/reports as the Cobol85 listing might get extremely large, potentially exceeding a compiler limit/filesize.

The Generate log can be used to check if the Cobol85 listings are enabled for the deployment.

Example

During Deployment

 02/05/18 @ 03:05:53 Report Compiles Started (Server Id <System Idx - Port#>) [<Task #> - <Job #>]  
 02/05/18 @ 03:05:53 Warning: Cobol85 Source Listing Enabled (*BD/0001634)
 02/05/18 @ 03:05:55 Total Reports to Bind 1
 02/05/18 @ 03:05:56 Report Bind Complete CUSTLIST

Cross Reference

This feature enables the generation and retention of the Cobol85 source and cross reference listings including any ‘INCLUDE’ files.

Perform the following to enable this:

  1. Modify the existing Taskstring of NGENxxSYS/BLD utility to include SETLISTXREF

    For Example,

    wfl modify (rtuser)ngen28sys/bld on rtpack;taskstring =” SETLISTXREF “ — Ensure to retain any existing TASKSTRING text

    use Cande Lfile (rtuser)ngen28sys/bld on rtpack:PPB to view any current Taskstring value

  2. All units (ispecs, methods, reports) generated while the SETLISTXREF is present in the BLD taskstring will have the Cobol85 compiler listings and a cross reference generated. The Cobol85 compiler listings and cross references will be created as a *BD file for the NGEN28SYS/BLD job number.

    Note: You should only attempt this for a discrete number of ispecs/methods/reports as the Cobol85 cross referencing might get extremely large, potentially exceeding a compiler cross reference limit. This setting will be ignored for a REBUILD Deployment.

The Generate log can be used to check if the Cobol85 analysis is enabled for the deployment.

Example

During Deployment

02/05/18 @ 02:55:52 Report Compiles Started (Server Id 413-8886) [1-J 1530]
02/05/18 @ 02:55:53 Warning: Cobol85 Source Listing & XREF Enabled (*BD/0001530)
02/05/18 @ 02:55:55 Total Reports to Bind 1
02/05/18 @ 02:55:55 Report Bind Complete CUSTLIST