SASFILE Statement: z/OS

Reduces I/O processing by holding the entire data set in memory.
Valid in: Anywhere
z/OS specifics: Performance considerations
See: SASFILE Statement in SAS Statements: Reference


The SASFILE statement can greatly reduce both the elapsed time required for a SAS job to run and the CPU time for the job. However, in an environment where the various z/OS processes (batch jobs, TSO users, and started tasks) are competing for real (central) storage, the SAS data set might require more virtual storage than is available. Unless steps are taken to manage memory usage, virtual storage paging delays could negate the benefits of using the SASFILE statement.
SAS allocates virtual storage above the 16M line for buffers and associated control blocks for a SAS data set. The SASFILE statement causes SAS to reserve enough buffers to hold the entire data set in memory while it is processed by multiple SAS DATA steps and procedures and then written to disk (if necessary) once. However, if the overall environment is constrained for storage, or a process like the SAS/SHARE server is processing a heavy workload, the page frames that are occupied by the SAS data set buffers can be stolen, and virtual storage paging delays can occur.
For batch jobs, this problem can be avoided by simply scheduling the job to run when the overall system is less busy. However, in general, it might be necessary to use storage isolation to enforce a minimum working set size for the job. IBM’s z/OS: MVS Initialization and Tuning Guide provides an explanation of storage isolation in its discussion of SRM.
To estimate the minimum working set required for a SAS job, consider the following:
  • the amount of storage that is required for the buffers and associated control blocks supporting a SAS data set loaded with the SASFILE statement. The amount of storage approximately equals (# of member pages) * ((member page size) + 120). You can obtain the number of data set pages and data set page size by running PROC CONTENTS on the data set.
  • the baseline requirements that are necessary for executing the job without the SASFILE statement.
For installations running Workload Manager in goal mode, it is not possible to set the SRM options directly. Under Workload Manager, it might be appropriate to establish a velocity goal for the SAS jobs or servers that use the SASFILE statement to load large SAS data sets into memory.