Getting in Tune

Tuning SYSGEN Parameters that AUTOGEN misses.


Basic system tuning hints
02-DEC-1998
Revised 29-Nov-2000

In general, running autogen with feedback once a month is sufficient to take care of most sysgen parameters, however here are some things that autogen does not take care of satisfactorily. Remember, always make your changes in the file SYS$SYSTEM:MODPARAMS.DAT


1. Non paged dynamic memory

At the end of your processing day or several days of heavy operation, enter in the command :


$SHOW MEM/POOL/FULL

System Memory Resources on
1-DEC-1998 11:02:05.50

Non paged Dynamic Memory                 (Lists + Variable)
-> Current Size (bytes) 11747328    -> Current Size (pagelets) 22944
-> Initial Size (NPAGEDYN) 2932736  -> Initial Size (pagelets) 5728
  Maximum Size (NPAGEVIR) 14671872    Maximum Size (pagelets) 28656
   Free Space (bytes) 4748992          Space in Use (bytes) 6998336
   Size of Largest Block 1485056       Size of Smallest Block 64
   Number of Free Blocks 13830         Free Blocks LEQU 64 Bytes 1391
   Free Blocks on Lookasides 9630      Lookaside Space (bytes) 1942784

Paged Dynamic Memory
   Current Size (PAGEDYN) 3170304      Current Size (pagelets) 6192
   Free Space (bytes) 1844368          Space in Use (bytes) 1325936
   Size of Largest Block 1837328       Size of Smallest Block 16
   Number of Free Blocks 111           Free Blocks LEQU 64 Bytes 96

   Look at the first two lines, current and initial size. If the current size is larger than the initial size then pool was expanded and is fragmented. This means the sysgen parameter NPAGEDYN should be increased. To determine what value it should be set at, use this procedure :

A. Take the current size in pagelets (second col) and divide the number by 2048 to get megabytes. This number should be no larger than %12 of your physical memory. If your number of megabytes is less than or equal %12 of physical memory, use method A1. If it is larger than %12 of physical memory, use method A2.

A1. Take the current size in bytes and round up to the nearest hunderd-thousand (100,000). Ie: 11747328 rounded would be 11800000. Use this value in step B.

A2. Take the size of physical memory in megabytes and multiply it by 122880. This gives you %12 of memory in bytes. Compare this number to the initial size (NPAGEDYN). If your result is larger, then use your result in step B. If your result is less then or equal to the initial size (NPAGEDYN) then do nothing, you don't have enough memory (consider buying more).

B. Take you calculated value, and edit the file SYS$SYSTEM:MODPARAMS.DAT inserting the line :

MIN_NPAGEDYN = your_new_result

C. Exit the editor and autogen and reboot at the next opportunity.


2. Paged dynamic memory

While your system is being heavily used by heavy memory users, and or many users logged in, enter in the command :

$SHOW MEM/POOL/PHYS/FULL

System Memory Resources on
1-DEC-1998 11:02:05.50

Physical Memory Usage (pages): Total   Free   In Use   Modified
-> Main Memory (256.00Mb)     32768   16861   12867    3040

Non paged Dynamic Memory               (Lists + Variable)
   Current Size (bytes) 11747328     Current Size (pagelets) 22944
   Initial Size (NPAGEDYN) 2932736   Initial Size (pagelets) 5728
   Maximum Size (NPAGEVIR) 14671872  Maximum Size (pagelets) 28656
   Free Space (bytes) 4748992        Space in Use (bytes) 6998336
   Size of Largest Block 1485056     Size of Smallest Block 64
   Number of Free Blocks 13830       Free Blocks LEQU 64 Bytes 1391
   Free Blocks on Lookasides 9630    Lookaside Space (bytes) 1942784

Paged Dynamic Memory
-> Current Size (PAGEDYN) 3170304   Current Size (pagelets) 6192
-> Free Space (bytes) 356368      -> Space in Use (bytes) 2813936
   Size of Largest Block 1837328     Size of Smallest Block 16
-> Number of Free Blocks 111      -> Free Blocks LEQU 64 Bytes 96

The goal here is to make sure that the free space never goes below %10 of the value in current size (PAGEDYN), and there is at least 4 free blocks (greater than 64 bytes) for each concurrent user process. To determine the best value for PAGEDYN, use this method.

A. Take the largest value you see for Space in use (bytes) and divide it by 0.9 (or multiply by 1.11) and round up to the nearest 100,000. For example 2813936 * 0.9 = 3126596, rounding up yields 3200000 bytes (3.2 MB). Call this value "A".

B. Take The number of free blocks and subtract Free Blocks LEQU 64 bytes. Take this number and subtract it from the number of concurrent users times 4 (concurrent users includes the sum of all user process, Interactive, subprocess, and batch at peak usage) this yields the number of pagelets, to convert to bytes multiply by 512. Then add this result to the current size (PAGEDYN). For example if your number of concurrent user users is 40 and the Number of free blocks is 111 and Free Blocks LEQU 64 bytes is 96 you have

(40 * 4) - (111 - 96) = 40 * 4 + 96 - 111 =
160 + 96 - 111 = 256 - 111 = 145 (pagelets)

Multiply by 512 to get 74240 bytes. Add this to the current size (PAGEDYN) of 3170304 to get 3244544. Rounding up to the nearest 100000 yields 3300000. Call this value "B".

C. Calculate %3 of physical memory in bytes. For example 256MB = (aprox) 256000000 bytes, multiply by .03 gives you 7680000 bytes. This is the maximum limit for PAGEDYN. Call it value "C"

D. Take the largest of Value "A" and value "B". Call this value "D".
(This is your taxable income, lookup your taxes from the table on page 21 and enter it here : __________)
Ooops! I got carried away.

E. Take the smallest of value "C" and value "D". This is your desired PAGEDYN. Edit the file SYS$SYSTEM:MODPARAMS.DAT and enter in the line :

MIN_PAGEDYN = your_result

F. Autogen and Reboot at your next opportunity.


3. PQL Working set quotas, and WSMAX.

It is important that the PQL Working set quotas be relatively small compared to the working set values defined by UAF working set quotas, the batch queue working set quotas, and the sysgen parameter WSMAX.

First, a fair rule of thumb for WSMAX is 4 times the value returned by the lexical function f$getsyi("MEMSIZE") (.25 times the lexical function f$getsyi("MEMSIZE") for VAX). This is usually taken care of by autogen. However it is worth checking.

The reason for the difference between Alphas and VAXs is because on an Alpha MEMSIZE is in Pages, and WSMAX is in Pagelets. (Also MEMSIZE returns physical memory allowed for P1 space not S0, S1, or P0 space.)

Enter in the command :

$WRITE SYS$OUTPUT f$getsyi("WSMAX")/f$getsyi("MEMSIZE")

If the result is not 4 then enter in the command :

$WRITE SYS$OUTPUT f$getsyi("MEMSIZE")*4

This gives you your desired WSMAX value. Now edit the file

SYS$SYSTEM:MODPARAMS.DAT and enter :

MAX_WSMAX = your_value (if the first command yielded a value > 4)
or
MIN_WSMAX = your_value (if the first command yielded a value < 4)

Now the PQL workingset values. These values should always be lower than their associated UAF workingset values established for each user, and lower than the values defined by batch queues. The values below should suffice most systems, unless you are memory poor (less than 32MB).

MAX_PQL_DWSDEFAULT = 1024
MAX_PQL_MWSDEFAULT = 1024
MAX_PQL_DWSQUOTA = 2048
MAX_PQL_MWSQUOTA = 2048
MAX_PQL_DWSEXTENT = 4096
MAX_PQL_MWSEXTENT = 4096

These must be MAX_ and not MIN_ because you don't want your default and minimum working set values to be too large. An Idle process will typically reduce it's workingset down to the value MAX_PQL_DWSDEFAULT if no image is active.


4. File system cache.

If your system does not serve any disks to the cluster or workstations (including X terminals), you can ignore this section. Autogen will take care of things for you. However if your system is a server, then follow these steps.

A. During normal daily operation run the command :

$SPAWN/NOWAIT/INP=NL:/OUT=NL: MONITOR FILE/RECORD=FILE_SYS.DAT

and let it run until the end of your processing day. When most of your processing load is over stop the subprocess with the STOP command and then enter in the command :

$MONITOR FILE/INPUT=FILE_SYS.DAT/OUTPUT=NL:/SUMMARY=FILE_SYS.TXT

Then look at the file FILE_SYS.TXT.

                   OpenVMS Monitor Utility
               FILE SYSTEM CACHING STATISTICS
                       on node MUMMY    From: 17-DEC-1998 06:36:02
                          SUMMARY       To:   17-DEC-1998 17:01:19

                             CUR     AVE     MIN     MAX
  Dir FCB
 (Hit %)           0.00   99.86    0.00  100.00
           (Attempt Rate)    0.00    0.98    0.00   61.92
  Dir Data
(Hit %)           0.00   99.25    0.00  100.00
           (Attempt Rate)    0.00    1.42    0.00   71.85
  File Hdr
(Hit %)           0.00   71.02    0.00  100.00
           (Attempt Rate)    0.00    6.81    0.00  108.94
  File ID
 (Hit %)           0.00   60.40    0.00  100.00
           (Attempt Rate)    0.00    0.13    0.00   11.58

  Extent
  (Hit %)           0.00   55.95    0.00  100.00
           (Attempt Rate)    0.00    0.11    0.00   12.25
  Quota
   (Hit %)           0.00   88.06    0.00   92.33
           (Attempt Rate)    0.00    0.20    0.00   11.58
  Bitmap
  (Hit %)           0.00   52.30    0.00  100.00
           (Attempt Rate)    0.00    0.08    0.00   14.19

B. The important things here are the AVERAGE and MAXIMUM hit percentages for each of the categories. If any of the MAXIMUM hit percentages are below %95, or AVERAGE hit percentages below %70 we may want to increase it's associated ACP_ cache sysgen parameter.

Note : Ignore any lines where the Hit percentages are zero. That means no data was taken during your monitor session. In the above example the areas that need adjusting are the File ID, Extent, and Bitmap cache who's average hit percentages are less than %70, and Quota who's maximum hit percentage is less than %95.

C. For each of these that needs increasing, to get the new desired value take the current sysgen value and divide it by the average hit percentage in decimal format. (always use the average hit percentage in your calculation, even if it is over %70 but the maximum hit percentage is less than %95). For example if the current sysgen value is 1024 and the average hit percentage is %63, then the new value should be 1024 / 0.63 = 1625.3968 or 1626 (I always like rounding up these values).

Here is a table of the monitor file system values and their associated SYSGEN parameters:

MONITOR File Label
SYSGEN Parameter

Dir FCB 

ACP_DINDXCACHE

Dir Data

ACP_DIRCACHE

File Hdr

ACP_HDRCACHE

File Id

ACP_FIDCACHE

Extent

ACP_EXTCACHE * (see note)

Quota

ACP_QUOCACHE

Bitmap

ACP_MAPCACHE

* Make sure that the value for ACP_EXTLIMIT is at least %50 larger than the value for ACP_EXTCACHE. The fact that these two values are in different units is taken into consideration.

D. If you need to change any of these parameters, do so in the file SYS$SYSTEM:MODPARAMS.DAT using the MIN_ prefix. For example :

MIN_ACP_DIRCACHE = 1626


5. Global sections and pages.

Make sure you have at least %10 free space in your global sections and global pages (unless you are memory poor).

Type in the commands :

$WRITE SYS$OUTPUT f$getsyi("FREE_GBLPAGES")*100/f$getsyi("GBLPAGES")

and

$WRITE SYS$OUTPUT f$getsyi("FREE_GBLSECTS")*100/f$getsyi("GBLSECTIONS")

each of these commands should yield a number greater than or equal to 10. If you get a number less than 10, you may want to consider increasing the appropriate sysgen parameter.

Note : it is not necessary to increase these values, unless you are planning to do some software product installs, or installing known images. Increasing these two parameters will not improve performance, but only take up more memory in S1 space.


6. Automatic working set adjustment

Unless you are memory poor, make sure automatic working set adjustment is turned off. Enter in the command :

$WRITE SYS$OUTPUT f$getsyi("PFRATL")

If the value is zero it is turned off. If it is nonzero it is turned on. If you are not memory poor, and it is nonzero, turn it off by editing the file SYS$SYSTEM:MODPARAMS.DAT and enter in the line :
PFRATL = 0

and autogen and reboot at the next opportunity. If you are memory poor, try not to muck with these parameters, instead, buy more memory.


More tuning tips to come in the future.
Stay tuned!

 

My Home Page | VMS Home

DCL | Utilities | Management | Tips

FORTRAN | Pascal

eMail Questions

Quiz?