|
The following recommendations should improve system performance.
They assume that the system's default search order will be used to
find modules. You should determine what search order will be used
for programs running in each of your applications and modify these
recommendations as appropriate when other search orders will be used
to find modules.
- Determine how much private area, CSA, and SQA virtual storage
are required to run your applications, both above 16 megabytes and
below.
- Determine which modules or libraries are important to the applications
you care most about. From this list, determine how many are reentrant
to see which are able to be placed in LPA. Of the remaining candidates,
determine which can be safely placed in LPA, considering security
and system integrity.
Note: All modules placed in LPA are assumed
to be authorized. IBM® publications
identify libraries that can be placed in the LPA list safely, and
many list modules you should consider placing in LPA to improve the
performance of specific subsystems and applications.
Note
that the system will try to load RMODE(ANY) modules above 16 megabytes
whenever possible. RMODE(24) modules will always be loaded below
16 megabytes.
- To the extent possible without compromising required virtual storage,
security, or integrity, place libraries containing a high percentage
of frequently-used reentrant modules (and containing no modules that
are not reentrant) in the LPA list. For example, if TSO/E response
time is important and virtual storage considerations allow it, add
the CMDLIB data set to the LPA list.
- To the extent possible without compromising available virtual
storage, place frequently or moderately-used refreshable modules from
other libraries (like the linklist concatenation) in LPA using dynamic
LPA or MLPA. Make sure you do not inadvertently duplicate modules,
module names, or aliases that already exist in LPA. For example,
if TSO/E performance is important, but virtual storage considerations
do not allow CMDLIB to be placed in the LPA list, place only the most
frequently-used TSO/E modules on your system in dynamic LPA.
Use
dynamic LPA to do this rather than MLPA whenever possible. Modules
that might be used by the system before a SET PROG command can be
processed cannot be placed solely in dynamic LPA. If these modules
are not required in LPA before a SET PROG command can be processed,
the library in which they reside can be placed in the linklist so
they are available before a SET PROG can be processed, but enjoy the
performance advantages of LPA residency later. For example, Language Environment® runtime
modules required by z/OS UNIX System
Services initialization
can be made available by placing the SCEERUN library in the linklist,
and performance for applications using Langauge Environment (including z/OS UNIX System
Services) can be
improved by also placing selected modules from SCEERUN in dynamic
LPA.
For more information about dynamic LPA, see the information
about PROGxx in z/OS MVS Initialization and Tuning Reference.
For information about MLPA, see the information about IEALPAxx in z/OS MVS Initialization and Tuning Reference
.
To load modules in dynamic LPA, list them on an LPA ADD statement
in a PROGxx member of PARMLIB. You can add or remove modules from
dynamic LPA without an IPL using SET PROG=xx and SETPROG LPA operator
commands. For more information, z/OS MVS Initialization and Tuning Reference
and z/OS MVS System Commands.
- By contrast, do not place in LPA infrequently-used modules, those
not important to critical applications (such as TSO/E command processors
on a system where TSO/E response time is not important), and low-use
user programs when this placement would negatively affect critical
applications. Virtual storage is a finite resource, and placement
of modules in LPA should be prioritized when necessary. Leaving low-use
modules from the linklist (such as those in CMDLIB on systems where
TSO/E performance is not critical) and low-use application modules
outside LPA so they are loaded into user subpools will affect the
performance of address spaces that use them and cause them to be swapped
in and out with those address spaces. However, this placement usually
has little or no effect on other address spaces that do not use these
modules.
- Configure as much storage as possible as central storage.
- If other measures (like WLM policy changes, managing the content
of LPA, and balancing central and expanded storage allocations) fail
to control storage saturation, and paging and swapping begin to affect
your critical workloads, the most effective way to fix the problem
is to add storage to the system. Sometimes, this is as simple as changing
the storage allocated to different LPARs on the same processor. You
should consider other options only when you cannot add storage to
the system. For additional paging
flexibility and efficiency, you can add optional storage-class
memory (SCM) on
Flash Express® solid-state
drives (SSD) as a second type of auxiliary storage. DASD auxiliary
storage is required. For details refer to Using storage-class memory (SCM).
- If you experience significant PLPA paging, you can use the fixed
LPA to reduce page-fault overhead and increase performance at the
expense of central storage. You can assure that specific modules
are kept in central storage by adding them to the fixed LPA by listing
them in IEAFIXxx. This trade-off can be desirable with a system that
tends to be CPU-bound, where it can be best to divert some of the
central storage from possible use by additional address spaces, and
use it for additional LPA modules.
High-usage PLPA modules probably
need not be listed in IEAFIXxx because they tend to be referenced
frequently enough to remain in central storage. A large FLPA makes
less central storage available for pageable programs. Accordingly,
fewer address spaces might be in central storage than would otherwise
be the case. No loss in throughput should occur, however, if CPU
use remains reasonably high.
Note that a large FLPA can increase
other demand paging and swapping activity, and that this will impede
the system's normal self-tuning actions because keeping these modules
in storage might prevent other, more frequently-used modules, from
being in storage as workloads shift over the course of time. Also,
like module packing lists, fixed LPA lists need to be maintained when
installing new releases of software, installing significant amounts
of service, or when your workloads change. If you can prevent LPA
paging by adding central storage, the system will be simpler to manage.
- When there is significant page-in activity for PLPA pages, and
you cannot take other actions to reduce it economically, you can minimize
page faults and disk arm movement by specifying module packing through
the IEAPAKxx member of parmlib. Module packing reduces page faults
by placing in the same virtual page those small modules (less than
4K bytes) that refer to each other frequently. In addition, module
groups that frequently refer to each other but that exceed 4K bytes
in combined size can be placed in adjacent (4K) auxiliary storage
slots to reduce seek time. Thus, use of IEAPAKxx should improve performance
compared with the simple loading of the PLPA from the LPALST concatenation.
(See the description of parmlib member IEAPAKxx in z/OS MVS Initialization and Tuning Reference.)
However,
you must maintain module packing lists whenever you install new levels
of software or significant service, or when your workloads change.
If you can increase the amount of central storage enough to control
PLPA paging rather than using a module packing list, the system will
be simpler to manage.
- If the first PLPA page data set specified during IPL is large
enough, all PLPA pages are written to the same data set. If the first
page data set is not large enough to contain all PLPA pages (for example,
when allocated as a one-cylinder data set as recommended below), the
remaining pages are written to the common page data set (the second
one specified during IPL). For best performance, all PLPA pages would
be written to a single page data set on a single DASD volume.
However,
a reasonable alternative is to define the PLPA page data set as a
single cylinder and define enough storage for the common page data
set to contain both the PLPA and common pages. When defined this
way, the PLPA and common page data sets should be contiguous, with
the small PLPA data set followed immediately by the large common data
set on the volume. You should consider allocating these data sets
this way unless you experience significant PLPA paging, because it
reduces the number of page data sets for which space must be managed
and simplifies support.
- If you have significant swapping or paging activity that affects
critical applications, and you cannot add central storage or storage-class
memory (SCM) to
manage it, you can tune the paging subsystem.
When most paging
subsystem activity is for swapping, a large number of page data sets
can outperform a small number of page data sets, even on high-speed
or cached devices. If you have substantial swapping, consider using
eight or more page data sets on different low-use volumes on low-use
control units and channel paths. However, these should generally be
considered stop-gap solutions. If the storage demand continues to
grow, tuning the paging subsystem will usually delay the inevitable
for only a short time. In the long run, adding central storage is
always a better solution. Note: Some cached devices also do not support
cached paging.
|