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 (see z/OS Language Environment Programming Reference) 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 HEAP, ANYHEAP, BELOWHEAP and HEAPPOOLS runtime options. For PL/I multitasking applications, the Language Environment THREADHEAP runtime option can be used to tune heap storage at the task level.
The heap pools algorithm (see Using HEAPPOOLS 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 heap pools algorithm for an application is a three-step process:
(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.Any time there is a significant change in the workload, repeat these tuning steps to obtain optimal HEAPPOOLS values.
RPTSTG(ON) and the STORAGE runtime option (see z/OS Language Environment Programming Reference) can have a negative affect on the performance of your application. Therefore, always use the IBM-supplied default setting RPTSTG(OFF) when running production jobs. Use RPTSTG(ON) and STORAGE(xx,xx,xx) only to debug applications.