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:
Reports — Invoked Method(s) performance (includes any invoked external class methods)
Reports — Cobol85 Statistics for report and its invoked method(s) (excludes any invoked external class methods)
Online — Cobol85 Statistics for full or partial system
Online — Overall transaction performance from COMSTP direct statistics capture
Online — Overall transaction performance from Examiner
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:
Generating the Cobol85 Compiler source listing (includes expanded INCLUDED files)
As per (1) plus the cross reference listing (Cobol 85 XREF)
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:
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.
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.
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.
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.
The statistics captured are: Method name, Call Frequency, CPU Secs, CPU Per Call, Pbits, Pbits Per Call and Array Resizes.
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.
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.
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:
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.
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.
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.
All reports generated while the SETSTATS is present in the BLD taskstring will have runtime Cobol85 Statistics capture enabled.
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 **.
When the report has completed, the Cobol85 Statistics will be available in the above *BD file.
It is recommended that you revert the BLD Taskstring to its prior value immediately after the report deployment is complete.
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.
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.
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:
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.
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.
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.
Copy (<rt usercode>)NGEN28/ENVIRONMENT/STATS as (app user)<system>/ENVIRONMENT_STATS from <rt pack>(pack) to <dict pack>(pack).
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.
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 **
It is recommended that you revert the BLD taskstring to its prior value immediately after the report deployment is complete.
Close the application when the testing is complete. Cobol85 statistics will be available in the above *BD file.
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 =”.“
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,
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.
Backup the current file <system>/COMS_LINC_TP file.
Copy (rt usercode)NGEN28/COMS_LINC_TP/PERF as (app user)<system>/COMS_LINC_TP from <rt pack>(pack) to <dict pack>(pack).
Restart the application.
A message “Transaction Statistics Capture Version” will be displayed for each COMSTP/Update as it initializes.
Submit the required transactions.
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.
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,
The impact of any given transaction on your system resources
Transaction frequencies
Transaction volume for a given program during a specific interval
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.
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
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:
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
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