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
At the end of your processing day or several days of heavy operation, enter in the command :
$SHOW
MEM/POOL/FULL
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_resultC. Exit the editor and autogen and reboot at the next opportunity.
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
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_resultF. Autogen and Reboot at your next opportunity.
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.
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:
* 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.
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
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
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.
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 = 0and autogen and reboot at the next opportunity. If you are memory poor, try not to muck with these parameters, instead, buy more memory.
DCL | Utilities | Management | Tips