Tuning the z/OS operating system to optimize MainView Middleware Monitor applications
Tuning the HEAP
This section describes how to tune the HEAP for 64-bit platforms.
Tuning the 64-bit HEAP
For best performance, the initial heap segment should be large enough to satisfy all requests for heap storage. The Language Environment storage report generated by the RPTSTG(ON) runtime option shows you how much heap storage is being used, the total number of segments allocated to the heap, the statistics for the optional heap pools algorithm, and the recommended values for the HEAP64, LIBHEAP64, IOHEAP64, HEAPPOOLS64 runtime options. You can use this information to tune HEAP64 to minimize the number of segments allocated and freed.
The heap pools algorithm (seeUsing heap pools to improve performance) can be used to significantly increase the performance of heap storage allocation, especially in a multi-threaded application that experiences contention for heap storage. However, if the algorithm is not properly tuned, heap storage could be used inefficiently.
Tuning the HEAPPOOLS64 algorithm for an application is a three-step process:
- Run your application with the runtime options HEAPPOOLS64(ON) or HEAPPOOLS64(ALIGN) as appropriate (using the default cell sizes and counts), and RPTSTG(ON) for some time with a representative application workload. Then examine the HEAPPOOLS64 Statistics and HEAPPOOLS64 Summary sections of the Storage Report for Enclave report.
- Change the cell sizes in the HEAPPOOLS64 runtime option to the Suggested Cell Sizes column from the first run. Rerun the application with a representative workload, using the default counts in the HEAPPOOLS64 option. Examine the storage report.
- The values listed in the Maximum Cells Used column of the HEAPPOOLS64 Summary should be the optimal values for the counts to minimize storage use. For a cell size that has multiple pools, the correct value to use is the largest "Maximum Cells Used" value for that size multiplied by the number of pools for that size.
Any time there is a significant change in the workload, repeat these tuning steps to obtain optimal HEAPPOOLS64 values.
Tuning the HEAPPOOLS algorithm for an application is a three-step process:
- Run your application with the runtime options HEAPPOOLS64(ON) or HEAPPOOLS64(ALIGN) as appropriate using the following cell sizes and percentages:
(8,10,32,10,128,10,256,10,1024,10,2048,10,3072,1,4096,1,8192,1,16384,1,32768,1,65536,1) and RPTSTG(ON) for some time with a representative application workload. It may be necessary for the application to increase the region size. - Change the cell sizes in the HEAPPOOLS64 runtime option to the Suggested Cell Sizes from the first run. Rerun the application with a representative workload, using the default percentages in the HEAPPOOLS64 option. Examine the storage report.
- The values listed as Suggested Percentages for Current Cell Sizes are the recommended values to minimize storage usage. Evaluate these values before finalizing cell pool sizes.
Any time there is a significant change in the workload, repeat these tuning steps to obtain optimal HEAPPOOLS64 values.
RPTSTG(ON) runtime option can have a negative effect on the performance of your application. Therefore, always use the IBM-supplied default setting RPTSTG(OFF) when running production jobs. Use RPTSTG(ON) only to tune HEAP64 attributes. See z/OS Language Environment Programming Reference for more information about RPTSTG.
Usage notes:
- These recommendations are dynamic and represent values for this particular run. The values may change with each run performed.
- Long-running applications may have an adverse effect on the statistical data collection. Fixed-length counters may overflow, causing incorrect HEAPPOOL64 recommendations. If the recommendations appear to be unrealistic, rerun with a reduced application run time.
Specifying monitored job names for reduced CPU usage
On z/OS platforms, QPBTM is used to monitor messages sent or received using IBM MQ APIs. Using the Management Console, you configure which IBM MQ applications (jobs) and IBM MQ queues or topics you wish to monitor. This configuration is then deployed to the z/OS systems. This configuration can be altered and redeployed easily.
Whenever a IBM MQ API is called, QPBTM determines whether the IBM MQ application and queue or topic combination is monitored. This determination does consume some CPU time within each IBM MQ application. Once your configurations have stabilized you may determine there are only a few IBM MQ applications that are monitored. You may also find that you are not monitoring a IBM MQ application that uses IBM MQ APIs often. The BTMINI installation member may be used to define a list of jobs that are included for monitoring or a list of jobs that are excluded for monitoring but not both.
It is recommended you use the option to exclude jobs and specify the job names for any QPMON or QPCFG jobs.
Follow these steps to update the BTMINI member and the QPBTM procedure in the Installation library:
- In BTMINI member specify EXCLUDE or INCLUDE statements.
- In QPBTM procedure update //BTMINI DD statement to point to BTMINI member.
- In QPBTM procedure update //BTMPRINT DD statement to use SYSOUT=* (Optional)
Each line of the BTMINI member should contain lines consisting of
INCLUDE=<job name>
Or
EXCLUDE=<job name>
Example:
EXCLUDE=ASTMON8H (QPMON task name)
EXCLUDE=ASTCFG8H (QPCFG task name)
Do not mix INCLUDE and EXCLUDE as they are mutually exclusive. Use caution with the INCLUDE statement since only the job names listed are included for monitoring.
If you want to monitor several Applications you will need an INCLUDE statement for each of them. Wildcards are not supported.
EXCLUDE statements processing
When a IBM MQ API call originates from one of the jobs specified in EXCLUDE statements further processing is bypassed.
INCLUDE statements processing
When a IBM MQ API call originates from one of the jobs specified in the INCLUDE statements processing continues and a normal determination is made from the configuration on whether the job and queue or topic are monitored.
The following messages will be displayed for job names that are either included or excluded.
or
Warning or error messages
The following warning or error messages will be displayed if the BTMINI member is not defined correctly.
BTM0022W - BTMINI:<Rec #>. Invalid keyword <Keyword>. Record ignored
Every line must begin with either INCLUDE= or EXCLUDE=. The warning identifies the line that does not.
BTM0023W - BTMINI: <Rec #>. Number of records <Accepted Rec #> exceeds maximum <Max Number>. Record ignored.
There are a fixed number of jobs that may be configured. The number is quite high and subject to change, refer to the warning message to determine the current maximum.
BTM0024W - BTMINI: <Rec #>. Job name exceeds maximum 8 characters. <Job name>. Record ignored.
A job name has a maximum of 8 characters. Please correct the typographical error.
BTM0025W - BTMINI: <Rec #>. Duplicate Job name <Job name>. Record ignored
The job name specified in the warning was listed more than once. Please remove the duplicate(s).
BTM0026E - BTMINI:Include/Exclude are mutually exclusive. Input ignored.
All lines must either be INCLUDE or EXCLUDE. You must choose which mechanism to be used.
BTM0027E - BTMINI:Unrecoverable I/O error. Input ignored.
The BTMINI member is not configured correctly or not readable.