Global CICS enqueue and dequeue: Performance and tuning

Global CICS® enqueue and dequeue extends the CICS application programming interface to provide an enqueue mechanism that serializes access to a named resource across a specified set of CICS regions contained within a sysplex.

Because global CICS enqueue and dequeue eliminates a significant cause of inter-transaction affinity, it enables better exploitation of parallel sysplex, providing better performance, capacity, and availability. It also reduces the need to provide inter-transaction affinity rules to dynamic routing mechanisms such as CICSPlex® SM, thus reducing the system management cost of exploiting parallel sysplex.

CICS uses z/OS® global resource serialization to provide sysplex-wide protection for the resources that participate in global CICS enqueue and dequeue. For more information on z/OS global resource serialization, see z/OS MVS Planning: Global Resource Serialization.

Implementation

You use an ENQMODEL resource definition to define each named resource for which the EXEC CICS ENQ and EXEC CICS DEQ commands have a sysplex-wide scope. The CICS regions that need to use sysplex-wide enqueue or dequeue function must all have the required ENQMODEL resources defined and installed. The recommended way to ensure this is for the CICS regions to share a CSD, and for the initialization group lists to include the same ENQMODEL groups. For more information on creating ENQMODEL resource definitions, see ENQMODEL resources.

For applications where the resource name is configured dynamically, so is not known in advance, you can use the enqueue EXEC interface program exits XNQEREQ and XNQEREQC to supply characters at the start of the resource name that match a suitable ENQMODEL resource definition. For more information on these user exits, see Enqueue EXEC interface program exits XNQEREQ and XNQEREQC.

When the EXEC CICS ENQ and EXEC CICS DEQ commands are issued for a resource, CICS checks for a matching installed ENQMODEL definition. If there is a matching ENQMODEL resource that specifies an enqueue scope, CICS passes the information to z/OS global resource serialization to manage the enqueue. z/OS global resource serialization provides sysplex-wide protection of the resource.

z/OS global resource serialization includes resource name lists (RNLs) that specify the scope of resources. RNL processing can cause the scope of resources to change from the scope that was specified in the ENQMODEL resource definition in CICS.

The default in z/OS is that global resource serialization searches the appropriate RNL for enqueue and dequeue requests, and uses the RNL to determine the scope of the resource. However, the default in CICS, as specified by the NQRNL system initialization parameter, is that all enqueue and dequeue requests specify RNL=NO and so are excluded from RNL processing. This action means that global resource serialization only uses the scope specified in the ENQMODEL resource definition in CICS, but it also means that the enqueue request is ignored by alternative serialization products, which impacts protection of the resource to systems outside the current global resource serialization environment that are using alternative serialization products. If you want z/OS global resource serialization to use RNL processing for enqueue and dequeue requests from CICS, specify the system initialization parameter NQRNL=YES for the CICS regions where RNL processing should be performed.

For more information on RNL processing for global resource serialization, see z/OS MVS Planning: Global Resource Serialization.

Recommendations

z/OS global resource serialization combines systems into a global resource serialization complex. One or more systems are connected to each other in a ring configuration (GRS=RING) or connected to a coupling facility lock structure in a star configuration (GRS=STAR). When global resource serialization is initialized as a star configuration, all the information about resource serialization is held in the ISGLOCK coupling facility structure. Global resource serialization accesses the coupling facility when a requestor issues an enqueue or dequeue instruction on a global names resource.

Note: Use GRS=RING with caution as this configuration can result in serious performance constraints. For performance reasons, in a sysplex of greater than two MVS™ images use a global resource serialization star configuration.

The performance impact can be for many reasons, but primarily it is due to the delay in having the request complete the ring. A large number of MVS images in the ring combined with a large value for RESMIL causes delays in the request completing the ring. The enqueue request cannot be granted until the request returns to the originating MVS image. Use a value of 0, or no greater than 1, for RESMIL in the GRSCNF member of SYS1.PARMLIB.