zPET - IBM Z and z/OS Platform Evaluation and Test - Group home

z/OS V2R2 z/OS UNIX Increase Kernel Thread Capacity Option KERNELSTACKS()

  

In z/OS V2R2, z/OS UNIX will provide a new BPXPRMxx parmlib option to indicate whether the z/OS UNIX kernel will obtain space switched stacks above or below the 2GB bar. To support the increased thread limit in the kernel, the KERNELSTACKS() statement has been introduced. If the new parameter is set to KERNELSTACKS(ABOVE), depending on the type of services that are being issued and the additional storage requirements of those services, the kernel thread capacity could possibly increase to 500,000. The default will be KERNELSTACKS(BELOW) to keep the stacks below the 2GB bar and limit threads to around 30,000. The setting and value cannot be set or changed dynamically nor can it be set via an OMVS restart. The setting and value will take place upon an IPL.

 

On some of the systems we enabled the new KERNELSTACKS(ABOVE), we added the following statement to our BPXPRM00 parmlib member.

KERNELSTACKS(ABOVE)

 

After the IPL of the system, we verified the setting via the OMVS options display.

This is an example from our Z1 system.

 

D OMVS,O

BPXO043I 14.10.13 DISPLAY OMVS

OMVS    0012 ACTIVE            OMVS=(00,Z1)

CURRENT UNIX CONFIGURATION SETTINGS:

...

KERNELSTACKS   = ABOVE

 

Note: If you do not include the KERNELSTACKS() statement in the BPXPRMxx member used to initialize OMVS, or you define KERNELSTACKS(BELOW), the OMVS options display will show the following.

KERNELSTACKS   = BELOW

 

Note: On some LPARs we started OMVS with parameters like ‘OMVS=(xx,00,ss)’, where xx would be the last two characters of a BPXPRMxx parmlib member, and ss would be the BPXPRMss member representing the system. For systems where we wanted the increased kernel thread capacity, the BPXPRMxx member would contain the KERNELSTACKS(ABOVE) statement, thus will override any KERNELSTACKS() statement in BPXPRM00 or BPXPRMss. This way we did not have to make modifications to the BPXPRM00 member each time we IPLed a particular system to set the KERNELSTACKS(ABOVE) statement, set the KERNELSTACKS(BELOW) statement, or eliminate the statement. BPXPRM00 and BPXPRMss members would not need the KERNELSTACKS() statement and could be used in releases prior to z/OS V2R2. 

This is an example of the OMVS display options using this method where BPXPRMSA contains the KERNELSTACKS(ABOVE) statement.

 

D OMVS,O

BPXO043I 14.10.13 DISPLAY OMVS

OMVS    0012 ACTIVE            OMVS=(SA,00,Z1)

CURRENT UNIX CONFIGURATION SETTINGS:

...

KERNELSTACKS   = ABOVE

 

There are changes to the ‘D OMVS,STORAGE’ display in z/OS V2R2 with the use of the KERNELSTACKS(ABOVE) parmlib option.

 

When the KERNELSTACKS(BELOW) parmlib option is used, the display remains the same as prior to z/OS V2R2. When the KERNELSTACKS(ABOVE) parmlib option is used, the display shows threads instead of stack cells.

 

There are some changes to the USS health checks in z/OS V2R2.

1.) USS_KERNEL_STACKS_THRESHOLD

This check monitors the current usage of z/OS UNIX kernel stacks cell pool cells against a suggested threshold.

This check will be disabled when KERNELSTACKS(ABOVE) is specified in parmlib and will generate the following similar messages:

BPXH075I KERNELSTACKS(ABOVE) was specified in the BPXPRMxx parmlib

members during IPL. USS_KERNEL_STACKS_THRESHOLD is not valid in the

current environment.

 

HZS1003E CHECK(IBMUSS,USS_KERNEL_STACKS_THRESHOLD):

THE CHECK IS NOT APPLICABLE IN THE CURRENT SYSTEM ENVIRONMENT.

 

2.) USS_KERNEL_PVTSTG_THRESHOLD

This check monitors the current usage of private below-the-bar storage of the UNIX System Services kernel against a suggested threshold.

Using user-specified dynamic severity is only valid with KERNELSTACKS(ABOVE). New parameters are similar to the following.

 

PARM('PVTSTG_HIGH(90%),PVTSTG_MED(85%),PVTSTG_LOW(80%)’)

 

There is a new USS health check in z/OS V2R2.

1.) USS_KERNEL_RESOURCES_THRESHOLD

This check monitors the current usage of z/OS UNIX System Services kernel resources.

The following is an example of the message displayed in the health check if KERNELSTACKS(ABOVE) is specified in the parmlib.

 

BPXH078I The following resources are being monitored:

-----------------------------------------------------

 Threads                      4462/   500000 ( 0%)

 

This check will be disabled when KERNELSTACKS(BELOW) is specified in parmlib and will generate the following similar messages.

 

BPXH076I KERNELSTACKS(BELOW) was specified in the BPXPRMxx parmlib

members during IPL. USS_KERNEL_RESOURCES_THRESHOLD is not valid in the

current environment.

 

HZS1003E CHECK(IBMUSS,USS_KERNEL_RESOURCES_THRESHOLD):

THE CHECK IS NOT APPLICABLE IN THE CURRENT SYSTEM ENVIRONMENT.

Author: Alfred Lease