ICPU is a real-time tool which is used to identify bottlenecks in application programs performance that can be eliminated by modifying the source code.
There are many sampling products on the market but their high, unacceptable overhead and complexity make them a system programming tool rarely used on production and only for a short time. These products are not available to application programmers who can discover performance problems at the early stage of development.
These products are postmortem tools used reactively after the problem occurred. They try to solve the problem by recreating it, or turning on sampling automatically, both of which may fail.
ICPU is innovative, user-friendly, effective, real-time CICS software, which was developed to answer these shortcomings. ICPU unique infrastructure results in a low, insignificant overhead and enables its unique functionality.
How do you save CPU cycles? You need to find the program that uses the most CPU and tune it. ICPU is the only sampling product that can run for an unlimited time on your production systems and identify this program. ICPU uncovers hidden CPU savings opportunities even for well-performing applications.
ICPU is the only sampling product that identifies the program and the code sequence which monopolizes the CPU, resulting in erratic response times for the whole CICS. It tells you about a problem as soon as it happens so you can take a corrective action immediately.
The information provided by ICPU can be used to modify your program code and save CPU cycles, improve response times and postpone upgrades.
ICPU samples CICS at user-defined time intervals. At every sample event, ICPU identifies the application program and the component using the CPU, whether it’s the application program itself or a service performed on behalf of the application, such as a CICS command, a SQL statement, or another system service, performed, for example by Language Environment.
Every sampling session is called Inspection and it is identified by a unique id, assigned by the user. The inspection results are recorded on a VSAM file at user-defined time intervals. This file serves as a repository for all the inspections and you can easily look at previous inspections and compare results after you modify your applications.
When an inspection is started, ICPU acquires buffers and begins collecting CPU usage information. ICPU collects CPU usage information by programs and "slices" and reports it in order of decreasing significance. For executable programs the size of a slice is defined by the user, and for Natural a slice is one Natural statement.
There are two types of inspections: a regular inspection and an exception inspection. When the inspection is a regular inspection ICPU samples CICS continuously for as long as needed and the sampling results are available at any point in time.
When the inspection is an exception inspection ICPU checks for exceptions at each sampling event. An exception event is raised when the CPU usage of any program exceeds the CPU threshold during the just ended check interval. When an exception event is raised, ICPU will record the event and notify about it.
ICPU unique functionality:
- Real time – results are available during the sampling session and afterwards and you don't have to stop the sampling in order to look at the results.
- Exception Notification – ICPU will notify you about any program that exceeds a CPU usage threshold as soon as it occurs, so you can take a corrective action immediately.
- Unlimited – ICPU can be used by any number of users at the same time, in any environment, for any length of time without affecting ICPU low, insignificant overhead.
- Unattended operation – sampling can be started automatically when CICS starts up or at any future time.
- Source Listing - matching of sampling data directly to COBOL source code.
- Model inspections ids - any previous inspection can be used as a model for a new one.
- CPU breakdown - CPU breakdown between QR TCB and Other TCBs and breakdown of CICS services.
- Generic Inspection Ids - A shorthand method of assigning Inspection Ids and referring to them.
- Filtering – By user, transaction, terminal, or program.
- Effective self learning tool – Users will learn how to develop better, more efficient programs.
ICPU also includes a set of Installation Verification, Demo programs that can be used to verify ICPU installation and to educate the user about the CPU usage of various CICS commands.
ICPU is a user-friendly, main menu, PFKey driven system. ICPU includes the following options:
- Start Inspection – used to start an inspection and set the run time, slice size, and other inspection parameters.
- Start Exception Inspection - used to start an exception inspection and set the exception CPU threshold and check interval and other inspection parameters,
- Inspections List – used to display the sampling results of a list of inspections each one with its highest CPU usage program and slice.
- Inspection Inquiry – used to display the results of any inspection, whether active or on file.
- Terminate Inspection – used to terminate an active inspection and record the inspection results.
- Delete Inspection – used to delete an inspection from the ICPU file.
- Customization – used to define system parameters, such as the Slice Size, the Sample Interval, and the Run Time.
- Set Password – used to set ICPU passwords.
Some examples of ICPU screens are shown below. The first is the Inspections List which shows a list of inspections and for each one the highest CPU usage program and slice. From this list you can select a specific inspection and get the full sampling results. When the inspection is a regular one you get the Inspection Results Summary screen and when the inspection is an exception one you get the Exception Results Summary shown below.
Inspections List Example:
The two sampling results examples below show a list of programs in descending order by CPU usage, and for each program, a list of slices, in descending order by CPU usage.
Inspection Results Summary example:
The “===Totals===” line is displayed on every screen and shows the total results of the inspection. In this example it shows that 29.7% of the CPU time was used by application code, 43.9% was used by CICS and 26.4% was attributed to other services. The CICS services breakdown shows that 85.9% of the services were DB2 requests, and 4.2% of the services were CICS Assign commands. The application code in the Natural nucleus program NATNUC01 used 4.3% of the CPU time, CICS modules servicing application requests used 15.2% of the CPU time, and other system services, such as Language Environment, used 4.7% of the CPU time. The Natural statement 2010 used 12.3% of the CPU time used by NATAPP01.
Exception Results Summary example:
This example shows that during the 60 seconds exception Check Interval ended at 09.24.47, the program NATNUC01 was using 68.7% (=24.6+24.5+19.6) of the CPU used by all applications, which exceeds the 65% threshold set for this inspection.
When an exception occurs ICPU invokes a transaction which notifies about the event as soon as it occurs. This feature is completely customizable and can be modified to any desired user logic. The supplied program writes a three-line message an example of which is:
ICPU can be used throughout the application life cycle starting from the development phase, ending with production implementation. Of course, the earlier that performance problems are discovered, the less it costs to fix them. A system with tuned applications is more stable, causes fewer problems and prolongs the lifetime of your site's hardware.
Of course, upgrading your CPU can solve CPU related performance problems, but with ICPU you can postpone the CPU upgrade, reduce your costs and improve response time and overall performance.
Tuning CICS is done mostly by trading off resources. With ICPU you are in a win-win situation – you can improve the efficiency of your online applications without giving up anything.
ICPU can be installed in less than an hour; it uses standard CICS and MVS services, and is available for all versions of CICSTS.