Short-on-storage conditions caused by subpool storage fragmentation

When migrating to CICS® Transaction Server for z/OS® you may experience short-on-storage problems in the Dynamic Storage Areas (DSAs) below the 16M line. In many cases the amount of storage allocated to the region is greater than in previous releases.

CICS storage management incorporates transaction isolation (subspaces) support in CICS Transaction Server for z/OS, including the fact that the DSAs are now managed by CICS with the DSA/EDSA limits being specified in the SIT, rather than a size for each DSA as in previous releases. Storage extents support dynamic storage management and provide subspace support. Storage extents are always allocated in multiples of 256K below the 16M line, with the exception of the UDSA which is allocated in 1M extents when transaction isolation is in use. Above the line extents are allocated in multiples of 1M.

When a DSA, such as the CDSA, requires additional storage in order to satisfy a GETMAIN request, the CICS storage manager allocates another extent to that DSA. However, if all extents are currently allocated, an attempt is made to locate a free extent in another DSA which may then be relocated to the DSA in need. However, in order to remove an extent from one DSA so that it may be allocated to another, all pages in the extent must be free (that is, not allocated to any subpool).

Analysis of short-on-storage problems begins by obtaining a dump when the system is in a short-on-storage condition. The best documentation is obtained by setting an entry in the dump table causing a dump to be taken when the DFHSM0131 (short-on-storage below the line) or DFHSM0133 (short-on-storage above the line) is issued. Use the CICS command CEMT SET SYDUMPCODE(SM0131) SYSDUMP MAXIMUM(1) ADD to indicate that a dump should be taken the first time a DFHSM0131 message is issued.

Use the IPCS command VERBX CICS640 'SM=3' to format the SM control blocks. Examine the DSA summaries, noting which DSA(s) are short-on-storage and the amount of free space in the other DSAs (above or below the 16M line as appropriate). The amount of freespace is given for each extent for each DSA.

Frequently either the UDSA or the CDSA is short-on-storage but there is a large amount of free storage in the SDSA. The following dump extracts are from a problem of this type where the UDSA is short-on-storage.

Each extent has an associated page pool extent (PPX) and page allocation map (PAM). Examination of the SDSA extents shows several extents with large amounts of freespace. For example, the extent beginning at 00700000 running through 0073FFFF has only 4K allocated and 252K free.

Extent list:      Start      End          Size     Free
                  00700000   0073FFFF     256K     252K

The DSA extent summary shows that the PPX for the extent at 00700000 is found at 09F0A100, and the associated PAM is found at 09F0A150. Examination of the PAM shows only one page is allocated, and it belongs to the subpool with an ID of x'7A'.

  Start      End          Size   PPX_addr   Acc     DSA
  00700000   0073FFFF     256K   09F0A100    C     SDSA
 
  PPX.SDSA 09F0A100 Pagepool Extent Control Area
 
     0000  00506EC4 C6C8E2D4 D7D7E740 40404040  *.&>DFHSMPPX     *
     0010  E2C4E2C1 40404040 09A1BA68 071B3EA0  *SDSA    ........*
     0020  00040000 00700000 0073FFFF 071B5EE0  *................*
     0030  00000000 09F0A150 00000040 0710A268  *.....0.&;.. ..s.*
     0040  0003F000 00000000 00000000 00000000  *..0.............*
 
  PAM.SDSA 09F0A150 Page Allocation Map
 
     0000  00000000 00000000 00000000 00000000  *................*
     0010 -    002F LINES SAME AS ABOVE
     0030  00000000 0000007A 00000000 00000000  *................*

The domain subpool summary determines for the SDSA which subpool is associated with the ID of x'7A'. In this dump 7A is the ID for subpool ZCTCTUA. Do not rely on the IDs being the same for multiple runs of CICS because the IDs are assigned in the order the ADD_SUBPOOL is issued.

  ==SM: UDSA Summary (first part only)
 
     Size:                             512K
     Cushion size:                      64K
     Current free space:                56K  (10%)
   * Lwm free space:                    12K  ( 2%)
   * Hwm free space:                   276K  (53%)
     Largest free area:                 56K
   * Times nostg returned:                0
   * Times request suspended:             0
     Current suspended:                   0
   * Hwm suspended:                       0
   * Times cushion released:              1
     Currently SOS:                     YES
 
  ==SM: SDSA Summary (first part only)
 
     Size:                            4352K
     Cushion size:                      64K
     Current free space:              2396K  (55%)
   * Lwm free space:                   760K  (17%)
   * Hwm free space:                  2396K  (55%)
     Largest free area:                252K
   * Times nostg returned:                0
   * Times request suspended:             0
     Current suspended:                   0
   * Hwm suspended:                       0
   * Times cushion released:              0
     Currently SOS:                      NO

A short-on-storage condition can occur as a result of large amounts of redundant program storage (RPS). This can be identified in the domain subpool summary and the loader domain summary (use the IPCS command VERBX CICS640 'LD=3' to format the LD control blocks).

DFH0STAT provides useful information in the storage summary without a breakdown by subpool. DFH0STAT should be run just prior to the completion of the statistics interval. For example, if the statistics interval is 3 hours, run DFH0STAT at 2 hours and 59 minutes. See Appendix E. The sample statistics program, DFH0STAT for more information.

To ease the short-on-storage problems, you can add records to the local catalog to enable the CICS self-tuning mechanism for storage manager domain subpools. For details of how to do this, using the CICS-supplied utility program, DFHSMUTL, see the CICS Operations and Utilities Guide. Alternatively, you can fix the size of the DSA using one or more of the SIT overrides, CDSASZE, UDSASZE, SDSASZE, RDSASZE, ECDSASZE, EUDSASZE, ESDSASZE, and ERDSASZE (see the CICS System Definition Guide). The self-tuning mechanism and the SIT overrides should only be used if increasing the DSA or EDSA limits does not completely resolve the short-on-storage problems.

Storage management requests the loader to reduce the RPS storage below 80%. This makes additional extents available to be allocated to the DSA in need.

LDPGMRO storage is allocated on a 16-byte boundary to reduce free space between programs.

If short-on-storage problems persist, initial DSA sizes may be specified as SIT overrides. The following process can be used to determine the values to use.

Collect DFH0STAT output as described, for information showing storage use by DSA during the intervals.

Review the CICS statistics for several days. This provides information which can be used to define the amount of storage used at a subpool and a DSA level. Extent usage is shown with the number of extents added and released.

In addition to the DSA information provided in DFH0STAT, the results about each subpool are provided, including the DSA where it was allocated. If statistics are being gathered, end-of-day statistics will only provide data since the last statistics collection.

Determine if DSALIM has been specified as large as possible, but allowing for OSCORE requirements of the various packages in use.

Allocating into managed extents can lead to a block of storage in an extent which is insufficient to satisfy a getmain request. With the dynamic nature of the subpools and DSAs, this should be relieved as the subpool/extent storage is reused. Specifying the initial DSA size using the SIT override for the affected DSA has the effect of reserving contiguous extents up to the amount specified, and eliminating the blocks of storage.

Additional DSAs (RDSA and SDSA) are available and many of the subpools from the UDSA are moved to the SDSA. The end-of-day statistics or information in a dump of the CICS region can be used to define relative sizes of the subpools and associated DSAs.

Also, using the LPA reduces the amount of storage used in LDNUCRO by approximately 100K.

MAPS should be defined as MAPS. Defining MAPS as programs causes them to be loaded into LDRES rather than in LDNUC. LDRES is part of the SDSA and more sensitive to fragmentation. For PSBPOOL space, the shutdown statistics provide the correct size.

[[ Contents Previous Page | Next Page Index ]]