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.