Allocating the write-ahead data set (WADS)

The write-ahead data set (WADS) is a DASD data set containing a copy of log records reflecting committed operations in the OLDS buffers that have not yet been written to the OLDS. WADS space is continually reused after the records it contains are written to the OLDS. The recommended size for your WADS varies by your environment.

You can specify this required data set by JCL, or you can dynamically allocate it. The WADS ddname is DFSWADSn, where n is a number 0 - 9. If you define multiple instances of a WADS, they are used in the WADS DD statement suffix sequence as indicated by the n in the ddname. Preallocate the WADS on DASD supporting Extended Count Key Data (ECKD) architecture and then format the WADS with a /NRE or /ERE FORMAT WA command at least once before it is used. Each WADS must be on the same device type and have the same space allocation.
Recommendation: For increased performance, allocate each WADS on a minimally used device and data path.

Dual WADSs provide an alternative source of input to the OLDS in case an error occurs on one WADS while IMS uses it to close the OLDS. You can use single or dual WADS logging with either single or dual OLDS logging. Specify single or dual WADS logging by using the WADS=S or WADS=D parameter. Define at least two WADSs before enabling dual WADS logging.

You can define up to 10 WADSs to use as spares. IMS automatically switches to a spare WADS if the current WADS becomes unusable after an error occurs. If a write error occurs, logging to the WADS continues if there is at least one WADS is available (for single logging) or two WADSs are available (for dual logging). If you use dual logging, define at least three WADSs so that IMS can activate the spare if a write error occurs. For additional resiliency, define each WADS on a different hardware device.

Define the initial set of WADSs to be acquired by restart initialization in the WADSDEF control statement in the LOGGER section of the DFSDFxxx member of the IMS PROCLIB data set.

The following table shows how many WADS tracks are needed for different OLDS block sizes.

Table 1. OLDS buffers per WADS track
OLDS block size WADS on 3380 WADS on 3390
6 KB 6.67 8.00
8 KB 5.00 6.00
10 KB 4.00 4.80
12 KB 3.33 4.00
14 KB 2.86 3.43
16 KB 2.50 3.00
18 KB 2.22 2.67
20 KB 2.00 2.40
22 KB 1.82 2.18
24 KB 1.67 2.00
26 KB 1.54 1.85
28 KB 1.43 1.71
30 KB 1.33 1.60

In a non-DASD mirroring environment, set the number IMS WADS cylinders to the number of defined OLDS buffers divided by 20 (rounded up).

In a DASD mirroring environment, set the number of IMS WADS cylinders to at least 300 or the number of defined OLDS buffers divided by 20 (rounded up), whichever is greater. This is done to reduce the rate at which the WADS wraps back to the beginning of the data set.

A larger WADS size does not adversely affect IMS logger performance and can provide more stability during brief increases in logging activity, such as checkpoints, during increases in write response times, such as OLDS switches, and with DASD cache destage issues. However, a larger WADS size affects the time of an emergency restart or a take-over in an extended recovery facility (XRF) environment.

The WADS must be at least five tracks.

You can enable your WADS to use extended address volumes (EAVs) that are available in z/OS® V1.12 or later. To enable a WADS to use EAVs, specify an EAV volume on the VOLSER parameter of the DFSWADSnn DD statement when you allocate the data set. In addition, you can specify the attribute EATTR to indicate whether the data set supports extended attributes.

Restriction: Data sets with EATTR=OPT specified cannot be shared with an IMS Version 11 system because IMS Version 11 does not support extended attributes.

Start of changeThe WADS must be defined as a VSAM linear data set with a control interval (CI) size of 4 KB (4096-bytes), secondary space allocation of 0, and the SHAREOPTIONS(3 3) parameter.End of change

Start of changeThe hardware features of High Performance FICON® for z Systems™ (zHPF) and zHyperWrite can be used for writing to the WADS. zHPF increases throughput if it is enabled on the LPAR. zHyperWrite is optionally used to decrease replication latency. You can use one of the following methods to enable or disable zHyperWrite for the WADS:
  • Use the WADS= keyword in the ZHYPERWRITE= parameter in the LOGGER section of the DFSDFxxx PROCLIB member to enable or disable zHyperWrite. You must restart IMS to make the change effective. Changes introduced by using this keyword will persist across a restart. For more information, see LOGGER section of the DFSDFxxx member.
  • Issue the UPDATE IMS SET(LCLPARM(ZHYPERWRITE(WADS())) command. You don't need to restart IMS to make the changes effective. However, changes introduced by issuing this command will not persist across a restart. For more information, see UPDATE IMS command.
End of change
Start of change

Sample JCL to allocate WADS as a VSAM linear data set


//AMS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *

DEFINE CLUSTER -
     (NAME(IMSA.WADS.VSAM) -
     VOLUME(VOL001) -
     CONTROLINTERVALSIZE(4096) -
     SHAREOPTIONS(3 3) -
     CYLINDERS (20 0) -
     LINEAR)
/*
End of change