z/OS Language Environment Customization
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


LIBSTACK

z/OS Language Environment Customization
SA38-0685-00

Derivation: LIBrary STACK storage

LIBSTACK controls the allocation of the thread's library stack storage. This stack is used by Language Environment and HLL library routines that require save areas below the 16MB line.

Non-CICS default
LIBSTACK=((4K,4K,FREE),OVR)
CICS® default
LIBSTACK=((32,4080,FREE),OVR)
Read syntax diagramSkip visual syntax diagram
Syntax

                                                  .-FREE-.   
>>-LIBSTACK--=--(--(--init_size--,--incr_size--,--+-KEEP-+------>

         .-OVR----.      
>--)--,--+-NONOVR-+--)-----------------------------------------><

init_size
Determines the minimum size of the initial library stack segment. The storage is contiguous.

Specify init_size as n, nK, or nM bytes of storage. init_size can be preceded by a minus sign. In environments other than CICS, if you specify a negative number, all available storage minus the amount specified is used for the initial stack segment.

In non-CICS environments, an init_size of 0 or -0 requests half of the largest block of contiguous storage below the 16-MB line. In addition when STACK(,,ANY,,,) is in effect, Language Environment® does not acquire the initial library stack segment until the first program that requires LIBSTACK runs.

Language Environment allocates the storage rounded up to the nearest multiple of 8 bytes.

incr_size
Determines the minimum size of any subsequent increment to the library stack area. Specify this value as n, nK, or nM bytes of storage. The actual amount of allocated storage is the larger of 2 value (theincr_size or the requested size) rounded up to the nearest multiple of 8 bytes.

If you do not specify incr_size, Language Environment uses the Non-CICS default setting of 4K. If incr_size=0, Language Environment gets only the amount of storage needed at the time of the request, rounded up to the nearest multiple of 8 bytes.

The requested size is the amount of storage a routine needs for a stack frame. For example, if the requested size is 9000 bytes, incr_size is specified as 8K, and the initial stack segment is full, then Language Environment gets a 9000 byte stack increment from the operating system to satisfy the request. If the requested size is smaller than 8K, Language Environment gets an 8K stack increment from the operating system.

FREE
Specifies that Language Environment releases storage allocated to LIBSTACK increments when the last of the storage in the library stack is freed. The initial library stack segment is not released until the enclave terminates.
KEEP
Specifies that Language Environment does not release storage allocated to LIBSTACK increments when the last of the storage is freed.
OVR
Specifies that the option can be overridden.
NONOVR
Specifies that the option cannot be overridden.

CICS considerations

  • If ALL31(ON) is specified, LIBSTACK is allocated above the 16MB line.
  • The initial and increment sizes for LIBSTACK are rounded to the next higher multiple of 8 bytes.
  • The minimum initial size is 32 bytes; the minimum increment size is 4080.
  • The default increment size under CICS is 4080 bytes, rather than 4096 bytes, to accommodate the 16-bytes CICS storage check zone. Without this accommodation, an extra page of storage is allocated (only when the storage allocation is below the 16-MB line).

z/OS® UNIX considerations

The LIBSTACK option sets the library stack characteristics on each thread.

The recommended setting for LIBSTACK under z/OS UNIX is LIBSTACK=((4K,4K,FREE),OVR).

Performance considerations

To improve performance, use the storage report numbers generated by the RPTSTG run-time option as an aid in setting the initial and increment size for LIBSTACK.

For more information

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014