CICS storage protection facilities: Performance and tuning
CICS® provides facilities to help you protect against storage violations. They are CICS subsystem storage protection, transaction isolation, command storage protection, and reentrant program storage protection. Enabling some of these facilities can incur a performance overhead.
Summary of CICS storage protection facilities
- CICS subsystem storage protection
- Protects CICS code and control blocks from being overwritten accidentally by user applications.
- Transaction isolation
- Offers protection against transaction data being overwritten accidentally by other user transactions.
- Command storage protection
- Prevents CICS, when processing an EXEC CICS command, from modifying storage that the issuing transaction could not itself directly modify.
- Reentrant program storage protection
- Protects storage of reentrant user application programs from being overwritten by CICS and other user-key applications.
See CICS storage protection and transaction isolation and Protecting against storage violations for a complete guide to CICS storage protection facilities.
Transaction isolation and applications
When using transaction isolation, it is necessary to activate pages of storage to the allocated subspace of the task. Before the storage is activated to the subspace, it is fetch protected so that the task cannot access the storage. After the storage is activated to the subspace allocated to the task, the task has read and write access to the storage. CICS must activate user storage to a subspace every time that the user task invokes a GETMAIN command to get a new page of user-key task-lifetime storage. Some performance cost is involved when activating storage to a subspace, so the activity should be kept to a minimum.
24-bit storage pages are activated in multiples of 4 KB. 31-bit storage pages are activated in multiples of 1 MB. A user task that only uses virtual storage in the 31-bit addressing range will therefore require fewer activate operations when compared to one which allocates from 24-bit storage. When you need to obtain 24-bit storage, you can improve performance by obtaining all the storage in one GETMAIN request, rather than several smaller GETMAIN requests. This minimizes the number of storage activate operations. To use 31-bit task storage and reduce the number of storage activations, link edit your programs by using RMODE(ANY) and define them as DATALOCATION(ANY), plus define all transactions as TASKDATALOC(ANY).It is likely you will need to increase the size of DSALIM and EDSALIM to account for the increase in the UDSA and EUDSA usage. If you are specifying the DSA sizes, you will also have to increase UDSASZE and EUDSASZE. See Allocation of real storage when using transaction isolation for more information including some guidelines.
For more information on the overhead of enabling transaction isolation, see CICS TS V5.1 performance report: transaction isolation.