Managing optimization and optimized module deployment process

Taking an iterative and staged approach when using ABO

An iterative and staged approach to using ABO is a recommended approach to balance the cost of the optimization process to the benefits from running the optimized programs generated by ABO.

For example, first optimize the modules containing the top x% contributors to CPU time. Measure the impact (for example, the reduction in CPU time) using these ABO generated modules, and then repeat for the next top x% CPU contributors until your performance goals are met.

Included with ABO is the Using the ABO Assistant. The ABO Assistant automates all the individual steps required to efficiently optimize your COBOL batch application using ABO and to clearly report on the CPU time savings from using ABO. The ABO Assistant can be used when evaluating ABO to determine potential CPU savings and also to prioritize deployment of applications and determine the top CPU consuming modules and CSECTs.

There are also stand-alone performance measurement and reporting tools that can be used, such as IBM Application Performance Analyzer (APA) for z/OS, to help determine the top CPU contributors. Alternatively, the RTI Profiler that comes with ABO can be used for COBOL batch applications to help determine which modules and CSECTs are most frequently executed when the application is running.

Characteristics of programs that benefit most from ABO

Some compiled programs will benefit more from ABO than others. Knowing some key characteristics of these programs can also help in staging use of ABO on your compiled COBOL programs.

ABO can only improve performance of the original compiler generated code and some select Language Environment (LE) routines, but ABO does not have the means to improve performance when time is spent in other subsystems such as CICS, Db2, and IMS.

Key characteristics of programs that might benefit more from optimization with ABO are:
  • A significant portion of the application’s execution time is spent in the COBOL code instead of in other subsystems such as CICS, Db2, and IMS.
  • The COBOL code is performing a significant amount of computations. For example, a program where the COBOL code itself is doing the actual, real work, and is not simply acting as a "driver" program for other programs or subsystems.
    • At the source level, some statements most likely to benefit include, but are not limited to: COMPUTE, IF, MOVE, ADD, SUBTRACT, MULTIPLY, DIVIDE, and REMAINDER.
    • In addition, some select Language Environment (LE) routines can also be optimized by ABO. These routines perform a variety of conversion, move, and arithmetic operations and include IGZCSH2, IGZCFPC, IGZCONV, IGZCVMO, IGZCXPR, IGZCXMU, and IGZCXDI. ABO optimizes these routines by more efficiently performing the work of these routines directly in the optimized code or by calling a more efficient LE routine.
      Note: Looking at the COBOL source alone does not take into account where the time in the application is actually spent, so this should be done in combination with a performance report from an analysis tool such as APA.
  • Most COBOL modules within the application are eligible for optimization by ABO. This means that the modules were complied with an eligible COBOL compiler and contain language features that are supported by ABO.