Document revision date: 19 July 1999 | |
Previous | Contents | Index |
You can enlarge the page cache by simply increasing the four page cache parameters: FREEGOAL, FREELIM, MPW_THRESH, and MPW_LOLIMIT. It is not necessary to remove balance slots or to reduce the working set size of any of the processes.
You should first increase the number of pages on the free-page list by augmenting FREELIM and FREEGOAL. Aim to provide at least one page on the free-page list for every process. FREEGOAL must always be greater than FREELIM. Generally, a good target size for FREEGOAL is three times FREELIM. If you feel your work load warrants it, you can increase the modified-page list size by increasing MPW_THRESH and MPW_LOLIMIT. Generally, MPW_LOLIMIT should be less than 10 percent of physical memory.
As another option, you could decide to reduce the number of balance
slots, as described in Section 11.14.
11.4 Decrease Page Cache Size
You decrease the size of the page cache by reducing the values for the system parameters MPW_LOLIMIT, MPW_THRESH, FREEGOAL, and FREELIM, maintaining the ratios suggested in Section 11.3.
In general, acceptable performance can be obtained by a page cache size
that is one order of magnitude less than the available space for it and
the working sets.
11.5 Adjust Working Set Characteristics
If you have concluded that the working set quota or working set extent characteristics are incorrect in some cases, the corrective action depends on how the values were established. You must know whether the values affect a process, subprocess, detached process, or batch job.
Furthermore, if you need to fix a situation that currently exists, you must evaluate the severity of the problem. In some cases, you may have to stop images or processes or ask users to log out to permit your changes to become effective. You would take such drastic action only if the problem creates intolerable conditions that demand immediate action.
In addition to making specific changes in the working set quota and working set extent values, you should also address the need to modify the values of the system parameters BORROWLIM and GROWLIM. For a discussion of these changes and tuning to make borrowing more effective, see Section 11.6.
Whenever you increase the values for working set extents, you should
compare your planned values to the system parameter WSMAX, which
specifies (on a systemwide basis) the maximum size that the working
sets can achieve. It will do no good to specify any working set extent
that exceeds WSMAX, because the working set can never actually achieve
a count above the value of WSMAX. If you specify such a value, you
should also increase WSMAX.
11.5.1 Establish Values for Other Processes
The following discussion applies to all processes other than ACPs. If the values were established for processes based on the defaults in the UAF, seek out the user, describe the intended change, and ask the user to enter the DCL command SET WORKING_SET/EXTENT or SET WORKING_SET/QUOTA, as appropriate.
If you observe satisfactory improvement from the new values, you must decide whether the benefit would apply whenever the process runs or just during some specific activities. For specific cases, the user should enter the SET WORKING_SET command when needed. For a more consistent change, modify the UAF.
To modify values in the UAF, invoke AUTHORIZE and use the SHOW and MODIFY commands to modify the values WSQUOTA and WSEXTENT for one or more users. You should change all the assigned values in the existing records in the UAF, as appropriate. Then you should also modify the DEFAULT record in the UAF so that new accounts will receive the desired values.
If the working set characteristic values were adjusted by the process through the DCL command SET WORKING_SET or by a system service, you must convince the owner of the process that the values were incorrect and should be revised.
If the values were adjusted by the user with the SET WORKING_SET
command, the user can simply enter the command again, with revised
values. However, if values were established by system services and the
process is currently running and causing excessive paging, either the
user must stop the image with Ctrl/Y or you must stop the process with
the DCL command STOP. (Changing values set by system services typically
requires code changes in the programs before they are run again.)
11.5.2 Establish Values for Detached Processes or Subprocesses
If the problem is introduced by a detached process or subprocess, you must also determine how the values became effective. If the values were established by the RUN command, they can be changed only if the user stops the detached process or subprocess (if it is running) and thereafter always starts it with a revised RUN command. (The user can stop the detached process or subprocess with the DCL command STOP.)
If the values were introduced by a system service, it is also necessary to stop the running detached process or subprocess, but code changes will be necessary as well.
If, however, the values were established by default, you might want to revise the values of the system parameters PQL_DWSEXTENT, PQL_DWSQUOTA, or both, particularly if the problem appears to be widespread. If the problem is not widespread, you can request users to use specific values that are less than or equal to their UAF defaults.
Unprivileged users cannot request values that will exceed their
authorized values in the UAF. If such an increase is warranted, change
the UAF records.
11.5.3 Establish Values for Batch Jobs
If the problem is introduced by a batch job, you must determine the source of the working set values.
If the values are those established for the queue when it was initialized, you cannot change them for this job while it is running. You must reinitialize the queue if you determine the changes would be beneficial for all future batch jobs. To reinitialize a batch queue, you must first stop it with the DCL command STOP/QUEUE, then restart it with the DCL command START/QUEUE. If the new working set values produce good results, ask the user to submit the job with the appropriate values in the future.
If the working set characteristics are obtained by default from the user's UAF, consider assigning values to the batch queues or creating additional batch queues. If you prefer to have values assigned from the UAF but have discovered instances where the best values are not in effect, before you change the UAF records, determine whether the changes would be beneficial at all times or only when the user submits certain jobs.
It is generally better to ask the users to tailor each submission than
to change UAF values that affect all the user's activities or batch
queue characteristics that affect all batch jobs.
11.6 Tune to Make Borrowing More Effective
If you have found few processes are taking advantage of loans, you should consider making the following adjustments:
In decreasing PFRATH, you will increase the rate at which processes increase their working sets with AWSA. (See Section 3.5 for a complete description of AWSA and its parameters. See Section 11.7 for guidelines regarding initial settings of the parameters.)
When you decrease BORROWLIM or GROWLIM, consider how much working set space you would like all processes to be able to obtain, according to the guidelines presented in Section 3.5. As a rough guideline, you could target a BORROWLIM value from one-third to one-half of available memory and a GROWLIM value from one-sixth to one-fourth of available memory.
Be generous in establishing values for the working set extents, since
the memory is only used when needed. As a general practice, set the
working set extent value to the largest value you expect will be
needed. Section 11.5 describes the various ways you adjust the working
set extent characteristic. (You may also need to increase WSMAX.)
11.7 Tune AWSA to Respond Quickly
You may want to increase the response from AWSA to paging so that AWSA rapidly establishes a working set size that keeps paging to a reasonable rate for your configuration and work load. To do so, you need to reduce PFRATH, increase WSINC, or both.
Think of PFRATH as the target maximum paging rate for any process in the system. PFRATH should always be greater than PFRATL. On Alpha, values of PFRATH larger than 32 (which specifies a desired maximum rate of 3 page faults per second of CPU time) are generally unreasonable. On VAX, values of PFRATH larger than 500 (which specifies a desired maximum rate of 50 page faults per second of CPU time) are generally unreasonable.
The system parameter WSINC defines the number of pages (VAX) or pagelets (Alpha) by which the working set limit increases when AWSA determines that it needs to expand. The maximum practical value for this parameter is therefore the difference between WSMAX (which is the maximum size increase that any working set can experience) and MINWSCNT (which is the minimum working set size). In practical terms, however, to avoid wasting memory, it makes sense to set WSINC smaller than this difference. A fairly good rule of thumb is to set WSINC to an approximation of a typical user's WSDEFAULT value. Such a value allows the processes to increase fairly rapidly, while limiting the potential maximum waste to the amount needed to minimally support one user.
If you are not fully satisfied with the results produced by tuning
WSINC and PFRATH, you could decrease AWSTIME. However, do not decrease
the value of AWSTIME below the value of QUANTUM. Your goal should be to
achieve a value for AWSTIME that follows the overall trend in the total
size of all the working sets. If you establish too small a value for
AWSTIME, AWSA could be responding to too many frequent drastic working
set size changes and not to the overall trend the changes describe.
11.8 Disable Voluntary Decrementing
If you find that some of the working set sizes are oscillating continuously while the processes should be in a stable state of memory demand, it is possible that voluntary (time-based) decrementing is forcing paging. To avoid this, set PFRATL to zero. This will effectively turn off voluntary decrementing. As a result, your system will rely solely on load-based memory reclamation (swapper trimming or outswapping).
Optionally, you may want to set WSDEC to zero. If you do, it will be
more obvious that voluntary decrementing is turned off on the system.
However, setting only WSDEC to zero does not disable the checking that
automatic working set adjustment performs for voluntary decrementing.
11.9 Tune Voluntary Decrementing
Some time-based working set trimming may be desirable to reclaim memory
that is not really needed (to avoid taking needed memory away from
other processes, for example). However, the parameters should not be so
high that too much paging occurs. In this case, you should decrease
WSDEC or PFRATL. Setting just PFRATL to zero or setting both WSDEC and
PFRATL to zero turns off time-based decrementing. However, if you
choose to maintain some voluntary decrementing, remember that to avoid
fixed oscillation, WSDEC should be smaller than WSINC. In addition,
WSINC and WSDEC should be relatively prime (that is, WSINC and WSDEC
should have no common factors). A good starting value for WSDEC would
be an order of magnitude smaller than a typical user's WSDEFAULT value.
11.10 Turn on Voluntary Decrementing
Sometimes time-based shrinking is completely turned off when it should be turned on. To enable voluntary decrementing:
To turn on the part of automatic working set adjustment that permits
processes to increase their working set sizes, you must set WSINC to a
value greater than zero. The default parameter settings established by
AUTOGEN at system installation are good starting values for most work
loads and configurations.
11.12 Adjust Swapper Trimming
When you determine that a paging problem is caused by excessive swapper trimming, SWPOUTPGCNT is too small. There are two approaches you can use. The first is to increase SWPOUTPGCNT to a value that is large enough for a typical process on the system to use as its working set size. This approach effectively causes the swapper to swap the processes at this value rather than reduce them to a size that forces them to page heavily.
The second approach completely disables second-level swapper trimming by setting SWPOUTPGCNT to a value equal to the largest value for WSQUOTA for any process on the system. This has the effect of shifting the bulk of the memory management to outswapping, with no second-level swapper trimming.
In conjunction with swapper trimming, the system uses the system
parameter LONGWAIT to control how much time must pass before a process
is considered idle. The swapper considers idle processes to be better
candidates for memory reclamation than active processes. The ideal
value for LONGWAIT is the length of time that accurately distinguishes
an idle or abandoned process from one that is momentarily inactive.
Typically, this value is in the range of 3 to 20 seconds. Increase
LONGWAIT to force the swapper to give processes a longer time to remain
idle before they become eligible for swapping or trimming. This
approach will prove most productive when the work load is mixed and
includes interactive processes. If the work load is composed primarily
of nonreal-time processes, consider increasing DORMANTWAIT.
11.13 Convert to a System That Rarely Swaps
To reduce the swapping activity on a system severely, you can set the system parameter BALSETCNT to a value that is two less than the value of the system parameter MAXPROCESSCNT, thus allowing the maximum number of processes to operate concurrently. At the same time, you should set the system parameter SWPOUTPGCNT to the minimum value.
As a secondary action, you would reduce the working set quotas, following the recommendations for adjusting working set characteristics in Section 11.5.
These actions produce a system that primarily pages rather than swaps.
11.14 Adjust BALSETCNT
You can use the BALSETCNT system parameter as a tuning control for
paging or swapping. Reducing BALSETCNT can reduce paging, while
increasing BALSETCNT can decrease swapping. BALSETCNT is a parameter
that affects a number of other parameters, so be conservative in
changing it.
11.14.1 Reduce BALSETCNT to Reduce Paging
If you reduce the number of balance set slots by decreasing the parameter BALSETCNT, you can reduce the demand for memory by limiting the number of processes that compete for memory at a given time.
From the output provided by the DCL command SHOW MEMORY under a very
heavy work load, you know the number of balance slots available and in
use. If balance slots are available under a heavy load, it is safe to
reduce the value of BALSETCNT by that amount. However, if no balance
slots are available and you reduce BALSETCNT, you are likely to force
swapping to occur while the system is loaded.
11.14.2 Increase BALSETCNT to Decrease Swapping Problems
If active swapping is being caused by a lack of balance slots when there is available memory, the first step is to increase BALSETCNT. The easiest thing to do is to set BALSETCNT equal to a value that is two less than the system parameter MAXPROCESSCNT. This guarantees that a balance slot will be available for any process that can be created. Swapping will then be forced only when memory is insufficient to meet the demand.
Rather than immediately setting BALSETCNT equal to a value that is two
less than MAXPROCESSCNT (which is the largest useful value), you can
try a more gradual approach. Divide the remaining free memory (as
displayed by the SHOW MEMORY command) by the size of a typical working
set, and then increase BALSETCNT by this number.
11.15 Reduce Large Page Caches
If active swapping is caused by a lack of free memory, which in turn is caused by unnecessarily large page caches, as a first step, reduce the size of the caches by lowering FREELIM and FREEGOAL, or MPW_LOLIMIT and MPW_THRESH. (Remember that MPW_HILIMIT relates to the maximum size of the modified-page list rather than the target minimum size.)
Good starting ratios for these parameters are given in Section 11.3.
Keep in mind that the problem of overly large caches is caused by
mistuning in the first place. The AUTOGEN command procedure will not
generate page cache values that are excessively large.
11.16 Suspend Large, Compute-Bound Process
Before suspending a large, low-priority, compute-bound process, curtail its memory allocation. If the process has not had a significant event (page fault, direct or buffered I/O, CPU time allocation) for 10 seconds or more, you can decrease DORMANTWAIT to make the process a more likely outswap candidate.
When you decide to suspend a large, compute-bound process, be sure that
it is not sharing files with other processes. Otherwise, the large,
compute-bound process may have a shared file locked when you suspend
it. If this should happen, other processes will soon become stalled.
You must resume the large, compute-bound process as soon as possible
with the DCL command SET PROCESS/RESUME, if you are unable to achieve
the benefit that suspending offers. In this case, refer to
Section 11.5 for appropriate corrective action.
11.17 Control Growth of Large, Compute-Bound Processes
When it becomes clear that a large, compute-bound process gains control
of more memory than is appropriate, you may find it helpful to lower
the process's working set quota. Take this action if you conclude that
this process should be the one to suffer the penalty of page faulting,
rather than forcing the other processes to be outswapped too
frequently. Section 11.5 describes how to make adjustments to working
set quotas.
11.18 Enable Swapping for Other Processes
If you determine that users have been disabling swapping for their processes and that the effect of locking one or more processes in memory has been damaging to overall performance, you must explore several options.
If there are no valid reasons to disable swapping for one or more of the processes, you must convince the users to stop the practice. If they will not cooperate, you can remove privileges so they cannot disable swapping. Use AUTHORIZE to change privileges. (The PSWAPM privilege is required to issue the SET PROCESS/NOSWAPPING command.)
However, if the users have valid reasons for disabling swapping,
carefully examine what jobs are running concurrently when the
performance degrades. It is possible that rescheduling a few of the
jobs will be sufficient to improve overall performance. See the
discussion about adding page files in Section 11.24.
11.19 Reduce Number of Concurrent Processes
You can reduce the number of concurrent processes by lowering the value
of MAXPROCESSCNT. A change in that value has implications for the
largest number of system parameters. Therefore, you should change the
value of MAXPROCESSCNT in conservative steps.
11.20 Discourage Working Set Loans
If working sets are too large because processes are using their loan regions (above WSQUOTA), you can curtail loaning by increasing GROWLIM and BORROWLIM. (To completely disable borrowing, just set GROWLIM and BORROWLIM equal to the special system parameter PHYSICAL_MEMORY (on Alpha) or PHYSICALPAGES (on VAX), which is the upper bound on the amount of physical memory that the system will configure when the system is booted.)
You might also consider reducing the WSEXTENT size for some processes
in the UAF file. If you go so far as to set the WSEXTENT values equal
to the WSQUOTA values, you completely disable borrowing for those
processes.
11.21 Increase Swapper Trimming Memory Reclamation
If you lower the value of SWPOUTPGCNT, you increase the amount of
memory reclaimed every time second-level trimming is initiated.
However, this is the parameter that most effectively converts a system
from a swapping system to a paging one and vice versa. As you lower the
value of SWPOUTPGCNT, you run the risk of introducing severe paging.
11.22 Reduce Rate of Inswapping
If you increase the special system parameter SWPRATE, you will reduce
the frequency at which outswapped processes are inswapped. SWPRATE is
the minimum real time between inswaps of compute-bound processes. For
this calculation, any process whose current priority is less than or
equal to the system parameter DEFPRI is considered to be compute bound.
11.23 Induce Paging to Reduce Swapping
To induce paging on a system that swaps excessively, you need to lower the working set quotas, as described in Section 11.5. In addition, you should increase the value of PFRATH, and you can also reduce the value of WSINC. With these modifications, you will slow down the responsiveness of AWSA to paging. The processes will not acquire additional working set space as readily.
It may be worthwhile to check the number of concurrent jobs in the
batch queues. Use the DCL command SHOW SYSTEM/BATCH to examine the
number and size of the batch jobs. If you observe many concurrent batch
jobs, you can enter the DCL commands STOP/QUEUE and
START/QUEUE/JOB_LIMIT to impose a restriction on the number.
11.24 Add Paging Files
If the system disk is saturated by paging, as described in Section 7.3, you may want to consider adding one or more paging files, on separate disks, to share the activity. This option is more attractive when you have space available on a disk that is currently underutilized. Use the SYSGEN commands CREATE and INSTALL to add paging files on other disks. (See the OpenVMS System Management Utilities Reference Manual.)
The discussion of AUTOGEN in the OpenVMS System Manager's Manual includes additional considerations and requirements for modifying the size and location of the paging file.
Previous | Next | Contents | Index |
privacy and legal statement | ||
6491PRO_012.HTML |