Monday, May 5, 2008

z/OS VSAM Striping

VSAM striping can be used to improve the performance of datasets that cannot cope with the IO rate from a single volume. In general, VSAM datasets with a high random access pattern benefited from being spread over several volumes. Aa an example, I once had a problem DB2 database that was very heavily accessed and really suffered from poor performance. This was fixed by making it go multi-volume. However, this is not the same as Striping. Striping means that each control interval in the file is written to another disk, so the dataset is spread evenly over several volumes. True striping is considered to improve sequential performance. RAID disks stripe datasets over physical volumes at hardware level, but this still appears as one logical volume to z/OS, as z/Os will still schedule one IO at a time to it. PAV aliases fixed that problem as they permit multiple concurrent IOs to one logical volume, so maybe striping is not as useful as it was. Be aware that if you use PAV, VSAM striping may make performance worse. However, if you want striping, this is how you do it.
Striping will only work for VSAM files that are allocated in Extended Format. To do this, the dataset must be SMS managed and be allocated with a dataclass that has a 'Data Set Name Type' of 'EXT'. Striping is not supported for Alternate Indexes or VSAM files using RLS. You specify that you want striping on a Storage Class. There are two different ways to do this, using Sustained Data Rate (SDR) or Guaranteed Space with an SDR greater than 0.
SDR: within the storage class definition set the 'Sustained Data Rate' parameter to a value that should be a multiple of four. The system will then divide that number by four to determine the number of stripes to use. For example, if you set SDR to 16, the system allocates 4 stripes (assuming you use 3390 format disks).
Guaranteed Space: If you set SDR > 0 and set the Guaranteed Space parameter to 'Y' then the system will use as many stripes as the number of volumes or units that you specify in your dataset allocation. VOLUMES(* * * *) or UNIT=(3390,4) should both allocate four stripes. Note that SMS may allocate fewer stripes if it does not have enough volumes with the right characteristics to support your request.
If you define a storageclass called 'STRIPED', then to allocated a striped file, you either code STORCLAS(STRIPED) in your IDCAMS allocation, or pick a dataset pattern and put a clause in your STORCLAS ACS routine so datasets matching that pattern get the STRIPED storage class. To convert a file to striped, rename the old file and all its components, re-allocate the original file with a STRIPED storage class, then IDCAMS REPRO the data from the old file to the new one.

0 Comments:

Post a Comment

<< Home