OpenVMS
Notes: System Tuning
-
The information and software presented on this web site are
intended for educational use
only by OpenVMS application developers and OpenVMS system attendants.
-
The information and software presented on this web site are
provided free of charge.
-
The information and software presented on this web site are
presented to you as-is.
I will not be held responsible in any way if the information or software
presented on this web site damages your computer system, business or
organization (sounds like the legal warning from a Microsoft shrink-wrap seal,
eh?)
-
The information presented on this page
can be really dangerous if you don't know what you are doing.
-
The information on this page will never be more than a simple overview. Much of
this info came from a third party (Raxco) tuning course back in 1987 but is still valid. If I've made any mistakes here then it was because I was
drinking a Heineken
while typing this.
*** This is a work in progress ***
A Very Simple Overview of OpenVMS Memory
- VMS and OpenVMS are multi-user "virtual memory" operating systems.
- Question: What is virtual memory?
- Answer: It is technology which allows a computer to split your memory
address space between electronic memory (RAM) and magnetic memory
(DISK).
- Question: Why would engineers go to all this
trouble?
- Answers:
- In the mid 1970's when DEC was designing the VMS operating
system for the VAX hardware architecture, RAM was very expensive
while DISK storage was much cheaper by comparison
- It was well known that once a program initializes,
it runs 10% of
its code 90% of the time. So wouldn't it be neat if 90%
of that seldom used code was moved out to DISK? This action would free up RAM for other processes
(system or user).
- And what about program data like large arrays? For example,
think about a professional astronomy simulation with 100,000 entries
for nearby stars; you only need to reference stars in the direction
you are looking so maybe "currently" unused star data could be moved
out to DISK too.
- Question: Memory is now cheaper so is this technology still necessary today?
- Answers:
- Yes, but first a brief history is required with the explanation.
- A 16-bit CPU can address a maximum memory size of 64
KiloBytes (2^16 =
65,536). These 16-bit systems accomplished quite a bit by swapping
processes between memory and disk. Mapping schemes allowed PDP
computers to support memory sizes of 18-bit, 22-bit, and 24-bit. The
operating system could see this memory but individual processes
could not. Now 24-bit sounds like a lot but it only represents 16
MegaBytes (2^24 =
16,777,216)
- The 32-bit VAX was developed in the mid 1970s to replace from
16-bit PDP.
- A 32-bit CPU can address a maximum memory size of 4 GB (2^32 =
4,294,967,296)
- In the mid 1970s, 4 GB of RAM was so unbelievably expensive that
no commercial computers were ever built to host 4
GB of RAM. (PCs
in the early 2000s routinely support the installation of 4 GB of
RAM)
- The 32-bit VAX-11/780, code-named "Star", was introduced
on 25 October 1977 at DEC's Annual Meeting of Shareholders. It was
the first computer to implement the 32-bit VAX architecture
- According to books like
DEC is Dead, Long Live
DEC and
Showstopper! The Breakneck Race to Create Windows NT,
development of a successor 64-bit technology began in the mid 1980s.
BTW, some of this technology made its way to Microsoft in 1988.
- The 64-bit
Alpha 21064 (also known as the EV4) was introduced by DEC
in November 1992.
- In theory, a 64-bit CPU can address a maximum memory size of 18
ExaBytes (2^64 =
18,446,744,073,709,551,616). However, machines based upon the
DEC Alpha
architecture can be manufactured to support as little as 8
TeraBytes (2^43
= 8,796,093,022,208).
- So just as no one ever imagined a computer hosting 4 GB of
32-bit RAM, no one today can imagine owning a 64-bit computer
holding 8 TB to 18 EB of RAM. On top of this, most programs still
usually will only run 10% of the code 90% of the time so virtual
memory technology will allow active processes to use the underused
memory of other processes.
- VAX pages are always 512 bytes in size. Why? This was the industry
standard size of a disk sector in the mid 1970s. Thirty five years later the
disk drive business has proposed increasing the value from 512 to 4096 for
disks manufactured in 2011.
- Alpha and Itanium make a distinction between pages and pagelets.
Pagelets (smaller than a page) are always 512 bytes but "pages" are larger
and vary between machines of the same type. Here are three ways to determine
page size:
$ mcr sysgen
SYSGEN> SHOW WSMAX
Parameter Name Current Default Min. Max. Unit Dynamic
-------------- ------- ------- ------- ------- ---- -------
WSMAX 100000 8192 1024 134217728 Pagelets
internal value 6250 512 64 8388608 Pages
SYSGEN> EXIT
$ write sys$output 100000/6250*512
8192
$
$ show memory/phy
System Memory Resources on 20-JUN-2010 06:22:01.58
Physical Memory Usage (pages): Total Free In Use Modified
Main Memory (128.00MB) 16384 3977 11327 1080
$ write sys$output 128 * 1024 * 1024 / 16384
8192
$
$ write sys$output f$getsysi("PAGE_SIZE")
8192
$
Speculation: "I think" DEC did it this way so that existing SYSUAF account
settings on VAX would automatically receive 16 times more memory on Alpha.
But this would only work if pagelets were larger than pages (see
Caveat in the next line item)
- An excerpt from
OpenVMS 8.3 System Manager's Manual, Volume 2 about pages and pagelets
Pages and PageletsOn VAX systems, the operating system allocates and deallocates memory for
processes in units called pages. A page on a VAX system is 512 bytes. Some
system parameter values are allocated in units of pages.
On Alpha and I64 systems, some system parameter values are allocated in units of
pages, while others are allocated in units of pagelets. Both Alpha and I64 support a variety of page sizes. The OpenVMS operating system
currently uses 8KB (8192 bytes) pages on Alpha and I64 systems. A pagelet is a
512-byte unit of memory.
One Alpha or I64 pagelet is the same size as one VAX
page. On an Alpha or I64 system with a page size of 8KB,
16 pagelets equal one
page.
When reviewing parameter values, especially those parameters related to memory
management, be sure to note the units required for each parameter.
Showing Parameter Values with SYSMAN and
Showing Parameter Values with SYSGEN explain how to show parameter values
and their units of allocation.
- It doesn't matter if you start a process using SYSUAF as a template or
run SYS$SYSTEM:LOGINOUT with your own parameters, the sysgen parameter
WSMAX
will place an upper limit on the maximum amount of RAM (physical memory) every process in the system.
- If you add more physical memory to an OpenVMS system,
your system will not
see/use any of it until you first invoke the tuning script:
@sys$update:autogen {
more parameters expected on this line }
Caveat: do not execute this script
unless you know what you are doing -OR- can experiment with a non-production
platform. You might think you can run this program without hurting your
system but doing so might prevent your system from rebooting at some future
time. More information about autogen can be found below.
Process Creation
VMS processes are created in two primary ways.
- Logging in with a username + password. A program called
sys$system:loginout.exe will look up your authorized parameters in
SYSUAF (system User Authorization File) then use them to create your
process.
-
Detached processes can be created without referencing the UAF and might be
started like this real-world example (parameters referenced here were defined elsewhere in the
script)
$ RUN SYS$SYSTEM:LOGINOUT -
/PROCESS_NAME=FTP_LISTENER -
/NOACCOUNTING -
/NOAUTHORIZE -
/DETACHED -
/INPUT=TCPWARE:FTP_LISTENER.COM -
/OUTPUT='LOGFILE' -
/ERROR=NLA0: -
/PRIORITY=5 -
/PRIVILEGES=(NOSAME,ACNT,ALTPRI,BYPASS,DETACH,GROUP,LOG_IO,NETMBX,-
SYSPRV,SHARE,TMPMBX,WORLD,EXQUOTA,PRMMBX,OPER,CMKRNL,-
CMEXEC,SYSNAM,OPER,PHY_IO,SETPRV,PSWAPM) -
/UIC=[1,3] -
/AST_LIMIT='ASTLM' -
/BUFFER_LIMIT='BYTLM' -
/ENQUEUE_LIMIT='ENQLM' -
/EXTENT='WSEXTENT' -
/FILE_LIMIT='FILLM' -
/IO_BUFFERED='BIOLM' -
/IO_DIRECT='DIOLM' -
/MAXIMUM_WORKING_SET='WSQUOTA' -
/PAGE_FILE='PAGEFILE' -
/QUEUE_LIMIT='TQELM' -
/RESOURCE_WAIT -
/SUBPROCESS_LIMIT='PRCLM' -
/WORKING_SET='WSLIMIT'
$!
System User Authorization File (SYSUAF)
Here is a sample UAF entry for my non-priv account:$ set def sys$system
$ run authorize
UAF>show ns_rieck
Username: NS_RIECK Owner: NSR_N123119_TEK
Account: ADMCSM UIC: [346,305] ([NS_RIECK])
CLI: DCL Tables:
Default: CSMIS$USER3:[ADMCSM.NS_RIECK]
LGICMD: CSMIS$COM:LOGIN.COM
Flags: DisPwdDic DisPwdHis
Primary days: Mon Tue Wed Thu Fri
Secondary days: Sat Sun
Primary 000000000011111111112222 Secondary 000000000011111111112222
Day Hours 012345678901234567890123 Day Hours 012345678901234567890123
Network: ##### Full access ###### ##### Full access ######
Batch: ##### Full access ###### ##### Full access ######
Local: ----- No access ------ ----- No access ------
Dialup: ----- No access ------ ----- No access ------
Remote: ----- No access ------ ----- No access ------
Expiration: (none) Pwdminimum: 8 Login Fails: 0
Pwdlifetime: (none) Pwdchange: 3-OCT-2003 16:03
Last Login: 9-DEC-2004 17:45 (interactive), 30-SEP-2002 13:55 (non-interactive)
Maxjobs: 0 Fillm: 300 Bytlm: 99000
Maxacctjobs: 0 Shrfillm: 0 Pbytlm: 0
Maxdetach: 0 BIOlm: 100 JTquota: 8192
Prclm: 10 DIOlm: 100 WSdef: 2000
Prio: 4 ASTlm: 100 WSquo: 4000
Queprio: 0 TQElm: 10 WSextent: 16000
CPU: (none) Enqlm: 400 Pgflquo: 99000
Authorized Privileges:
GROUP NETMBX TMPMBX WORLD
Default Privileges:
GROUP NETMBX TMPMBX WORLD
UAF>
Notes for some UAF Parameters:
- WSDEF (working set default) is the default
(starting) amount of physical memory allocated to a starting process
- WSQUO (working set quota) is the amount of
physical memory guaranteed to an active process
- WSEXTENT (working set extent) is the amount
of physical memory an active process can grow to if OpenVMS determines that memory is
available AND is tuned to allow borrowing. Documentation
Error Warning: OpenVMS 8.2 System
Manager's Manual Volume 1 states:
WSEXT specifies the maximum size to which a user's physical memory usage can grow,
independent of the system load. This enlargement of the physical memory for a
user is accomplished by the Adjust Working Set Limit ($ADJWSL) system service,
and is normally done for the user by the operating system in response to heavy
page faulting by the user. WSEXTENT is a nondeductible quota. This value should
always be greater than or equal to WSQUO. The value is controlled by the system
parameter WSMAX. Note that PQL_MWSEXTENT overrides the account's value for
WSEXTENT if PQL_MWSEXTENT is larger than WSEXTENT.
The yellow highlighted text is wrong since a lightly loaded system will
usually allow processes to borrow pages up to WSEXT. Once the freelist gets
too small, the system will stop allowing processes to borrow and may even
begin to trim processes back to WSQUO.
- PGFLQUO (page file quota) is the maximum
amount of space that this process may allocate in the Page File.
This will
place a maximum limit on the amount of virtual memory
for processes started with value.
- You will not usually experience problems if you increase this
value on a few problem accounts (generating large annual reports;
compiling large programs) but be aware that "you will be robbing Peter
to pay Paul" if your page file isn't large enough. Also, setting
PGFLQUO high doesn't guarantee your problem accounts full access to the
page file. Other processes may have already reserved a portion of it
before your problem process.
- Processes which actually require a large amount of virtual memory
but only have a small amount of physical memory (WSQUO) will probably cause the system
to thrash. It is for this reason that Automatic Working Set Adjustment
and BORROWING should always be enabled so that
A few of our Alpha BASIC programs consist of more than 60k lines so the memory
allotment for developers must be higher on our development system like so:$ set def sys$system
$ run authorize
UAF>show neil
Username: NEIL Owner: NSR_N123119_ADM
Account: ADMCSM UIC: [346,1] ([NEIL])
CLI: DCL Tables:
Default: CSMIS$USER3:[ADMCSM.NEIL]
LGICMD: CSMIS$ADM:LOGIN.COM
Flags: DisPwdDic DisPwdHis
Primary days: Mon Tue Wed Thu Fri
Secondary days: Sat Sun
No access restrictions
Expiration: (none) Pwdminimum: 8 Login Fails: 0
Pwdlifetime: (none) Pwdchange: 4-DEC-2006 15:02
Last Login: 19-JUN-2010 19:03 (interactive), 18-JUN-2010 23:05 (non-interactive)
Maxjobs: 0 Fillm: 300 Bytlm: 2000000
Maxacctjobs: 0 Shrfillm: 0 Pbytlm: 0
Maxdetach: 0 BIOlm: 1024 JTquota: 8192
Prclm: 20 DIOlm: 1024 WSdef: 2000
Prio: 4 ASTlm: 100 WSquo: 20000
Queprio: 0 TQElm: 10 WSextent: 200000
CPU: (none) Enqlm: 2000 Pgflquo: 2000000 <-- yikes
Authorized Privileges:
ACNT ALLSPOOL ALTPRI AUDIT BUGCHK BYPASS
CMEXEC CMKRNL DIAGNOSE DOWNGRADE EXQUOTA GROUP
GRPNAM GRPPRV IMPERSONATE IMPORT LOG_IO MOUNT
NETMBX OPER PFNMAP PHY_IO PRMCEB PRMGBL
PRMMBX PSWAPM READALL SECURITY SETPRV SHARE
SHMEM SYSGBL SYSLCK SYSNAM SYSPRV TMPMBX
UPGRADE VOLPRO WORLD
Default Privileges:
ACNT ALLSPOOL ALTPRI AUDIT BUGCHK BYPASS
CMEXEC CMKRNL DIAGNOSE DOWNGRADE EXQUOTA GROUP
GRPNAM GRPPRV IMPERSONATE IMPORT LOG_IO MOUNT
NETMBX OPER PFNMAP PHY_IO PRMCEB PRMGBL
PRMMBX PSWAPM READALL SECURITY SETPRV SHARE
SHMEM SYSGBL SYSLCK SYSNAM SYSPRV TMPMBX
UPGRADE VOLPRO WORLD
Identifier Value Attributes
DFU_ALLPRIV %X8001001D
UAF>
SYSGEN (System Generation)
$ def/user sys$output neil.txt ---+-- necessary to see parameters that will scroll off the page
$ mcr sysgen |
SYSGEN> SHO /MAJOR |
SYSGEN> SHO AW |
SYSGEN> EXIT |
$ type neil.txt ------------------+
Parameters in use: Active
Parameter Name Current Default Min. Max. Unit Dynamic
-------------- ------- ------- ------- ------- ---- -------
GBLSECTIONS 850 250 80 65535 Sections
MAXPROCESSCNT 346 32 12 16384 Processes
MULTITHREAD 2 1 0 256 KThreads
SMP_CPUS -1 -1 0 -1 CPU bitmas
SYSMWCNT 4003 2048 512 1048576 Pagelets
internal value 251 128 32 65536 Pages
BALSETCNT 344 30 8 16384 Slots
WSMAX 100000 4096 1024 8388608 Pagelets
internal value 6250 256 64 524288 Pages
NPAGEDYN 13524992 1048576 163840 -1 Bytes
PAGEDYN 3416064 524288 65536 -1 Bytes
FILE_CACHE 0 0 0 100 Percent
S2_SIZE 0 0 0 -1 MBytes
FREELIM 364 32 16 -1 Pages
LOCKIDTBL 4455 3840 1792 16776959 Entries
RESHASHTBL 4096 64 1 16777216 Entries
PFCDEFAULT 64 64 0 2032 Pagelets D
internal value 4 4 0 127 Pages D
GBLPAGES 1787424 65536 10240 -1 Pagelets D
internal value 111714 4096 640 -1 Pages D
QUANTUM 20 20 2 32767 10Ms D
PFRATL 0 0 0 -1 Flts/10Sec D
PFRATH 8 8 0 -1 Flts/10Sec D
WSINC 2400 2400 0 -1 Pagelets D
internal value 150 150 0 -1 Pages D
WSDEC 4000 4000 0 -1 Pagelets D
internal value 250 250 0 -1 Pages D
FREEGOAL 1376 200 16 -1 Pages D
GROWLIM 364 63 0 -1 Pages D
BORROWLIM 364 300 0 -1 Pages D
IO_PREFER_CPUS -1 -1 0 -1 CPU bitmas D
LCKMGR_MODE 0 0 0 255 CPU Count D
LCKMGR_CPUID 0 0 0 -1 CPU Id D
AWSMIN 512 512 0 -1 Pagelets D
internal value 32 32 0 -1 Pages D
AWSTIME 20 20 1 -1 10Ms D
$
A very simple overview:
- When a process starts, it is initially allowed WSDEF pages of
physical memory (RAM) and can demand more by faulting up to WSQUO (this
amount is guaranteed if AUTOGEN was done properly "and" no one was making
manual changes to the SYSGEN parameters). If the system is lightly loaded a
heavily faulting process may be allowed to borrow more pages up to WSEXTENT.
- SYSUAF values are only read when a process starts. If you change them
the user will need to log off then back in for them to take effect
- WSMAX places an upper limit on process growth. Setting WSDEF or WSEXT
larger than WSMAX will have no effect.
- How does OpenVMS know when to allow borrowing? Free pages in
OpenVMS are maintained in a structure known as the page cache or
FREE LIST.
When the system has more than GROWLIM pages, actively "faulting" processes
(at a rate higher than PFRATH) can acquire more pages up to a maximum of
WSEXTENT. On the flip side, when the system gets busy and the FREE LIST
shrinks lower than FREELIM, the SWAPPER will begin to trim back all processes
(extended processes first, then low faulting processes (lower than
PFRATL) next). This can continue and may even involve trimming dormant (idle
for longer than DORMANTWAIT) processes back to their working-set-defaults (WSDEF).
After this the system will resort to swapping out the process entirely. The
system will continue this until the FREE LIST size gets to FREEGOAL.
$mon sys (to watch the
FREE LIST grow or shrink)
Note: GROWLIM and BORROWLIM work together to enable or disable borrowing.
The borrow feature is first enabled when the system has more than BORROWLIM
pages and then disabled when the system has fewer than GROWLIM pages.
Together they provide a form of hysteresis to prevent the system from
acting erratically. (e.g. quickly switching from borrowing to trimming). Also
note that FREELIM = GROWLIM = BORROWLIM which is a common AUTOGEN setting
for systems with lots of memory (e.g. 512 MB or greater)
- Program code and read-only data (constants) reside on the FREE LIST while program
variable data reside on a smaller structure known as the MODIFIED LIST. This
so-called dirty page cache will need to be written to the PAGEFILE before
these pages are given to another process.
- When a processes needs more pages but is denied, it can get more by
giving up some existing pages back to the FREE LIST. If it needs the page
later and the desired page is on the FREE LIST, it can get it back by a
process of "soft faulting". However, if the page has been given to someone
else, the process will need to "hard fault" the data from disk.
- Busy systems may want to enable Automatic Working Set Adjustment
(AWSA) in both directions (expansion and contraction). The value of PFRATL has been
defaulted to zero for many years now but can be enabled to ensure that more
free memory is usually available (at the expense of more faulting).
- SYSMWCNT sets the work set size of the system. If this value is too
large, VMS will use too much physical memory; if this value is too small,
user processes will be given too much memory which means the OS will become
somewhat crippled.
- You should really read a tuning-guide before you mess with these
parameters. That said, if you must hack then check out the following online
help:
$mcr sysgen
SYSGEN>help sys freelim
sys freegoal
sys growlim
sys borrowlim
sys freelim
sys awstim
sys awsmin
sys wsinc
sys wsdec
sys pfratl
sys pfrath
Automatic Working Set Adjustment (AWSA)
In the parameter list above, you can see...
- that automatic working set adjustment runs every AWSTIME (200 ms).
- if a process has been faulting at a rate of PFRATH (8 Faults/10 Sec) and
other systems conditions are correct (like light loading), a process might
be given an additional WSINC (2400) pagelets
- if a process has at least AWSMIN (512 pagelets) and it has been faulting
at a rate lower than PFRATL, it will loose WSDEC (4000) pages). Because
PFRATL is set to zero on my system, there is no automatic working set
reduction.
- when automatic working set reduction is enabled, it is not a good ideal
to have GROWLIM = BORROWLIM
- FREELIM = GROWLIM = BORROWLIM which is a common AUTOGEN setting for
systems with lots of memory (e.g. 512 MB or greater)
OpenVMS Processes
- MAXPROCESSCNT specifies the maximum number of concurrent active
processes
- BALSETCNT specifies the maximum number of memory-resident processes
- MAXPROCESSCNT must always be at least 2 greater than BALSETCNT
- If a system contains active 500 processes and BALSETCNT is set to 400,
then 100 processes will be in a swapped-out state. This is OK if they're
batch jobs but will be bad news if they are interactive users.
OpenVMS Swapper
- The OpenVMS swapper serves two functions, trimming and swapping.
- When the FREE LIST drops below FREELIM, the swapper will starting
trimming processes that have borrowed pages back; possibly all the way to
WSQUO. Idle processes may be trimmed back to WSDEF. Processes idle for
longer than DORMANTWAIT might be swapped out.
- When the number of active processes exceeds BALSETCNT, the swapped will
need to move processes in-and-out of memory in order to meet the needs of
the round-robin-scheduler. When virtual memory systems swap in this fashion
it's usually not pretty because they get back into the system with their
working sets trimmed to WSDEF which is sometimes too small. This is one
reason why some system managers will avoid trimming to WSDEF and just go
straight to swapping.
Pool
- Non-paged Dynamic Pool is the memory structure usually associated with
MALLOC in "C"
- The initial size (in bytes) of non-paged dynamic pool is set by NPAGEDYN
but more space can be allocated as required
- Paged Dynamic pool is used to hold RMS file structures, logical names,
etc.
Retuning The System (via AUTOGEN)
Introduction
- invoke the tuning script using one of the following:
- @sys$update:autogen help
(to get complete help)
- @sys$update:autogen yada
(to get shorter parameter help)
When To Retune
- mandatory
- whenever you turn up a new system
- whenever you add or remove memory
- optional
- whenever workload changes drastically
- whenever you suspect a resource-related problem
How To Retune (overview)
- run system in production mode for at least 24 hours
- retune and reboot
- run the system for 7 days
- retune and reboot
How To Retune (details)
- optional: make manual changes in file
"sys$system:modparams.dat"
- invoke the tuning script using one of the following:
- @sys$update:autogen help
(to get complete help)
- @sys$update:autogen yada
(to get shorter parameter help)
- @sys$update:autogen
savparams setparams check_feedback (if the
system has been running for 24
hours)
- @sys$update:autogen
getdata setparams check_feedback (if the system has NOT been
running for 24 hours)
- now inspect the autogen report to make sure you haven't made some fatal
errors:
- $type/page
sys$system:agen$params.report
- now reboot like so:
- @sys$update:autogen
reboot
Manually Retuning The System (via SYSGEN)
Overview and Warnings
- Warning: manual tuning without AUTOGEN is
for experts only. I have witnessed two occasions where someone (not me) made
system parameter changes to OpenVMS which resulted in the system being
unbootable. The only way to fix this is to do a "conversational boot" of VMS
which drops the console into SYSGEN on the way up. At this point the
operator needs to make manual SYSGEN changes to make things right before
continuing with the boot process which happens as soon as you exit SYSGEN.
- Warning: the safest tuning method is to
place your SYSGEN commands in file "sys$system:modparams.dat" then invoke
the AUTOGEN script. This will ensure that dangerous settings and/or
parameter conflicts are written to the AUTOGEN report file titled
"sys$system:agen$params.report"
- That said, there are some situations where it will not be convenient of
possible to reboot the system. After all, this isn't a PC operating system.
Manual Tuning
- non-dynamic parameters can be changed by using SYSGEN but they won't
take effect until after a reboot.
- dynamic parameters can be changed on a running system without rebooting.
Here is an example:
$ mcr sysgen
SYSGEN> SH PFRATL
Parameter Name Current Default Min. Max. Unit Dynamic
-------------- ------- ------- ------- ------- ---- -------
PFRATL 0 0 0 -1 Flts/10Sec D
SYSGEN> SET PFRATL 2
SYSGEN> SH PFRATL
Parameter Name Current Default Min. Max. Unit Dynamic
-------------- ------- ------- ------- ------- ---- -------
PFRATL 2 0 0 -1 Flts/10Sec D
SYSGEN> WRITE ACTIVE (writes dynamic parameters to the active system in memory)
SYSGEN> WRITE CURRENT (writes all parameters to the current system parameter file on disk)
SYSGEN> EXIT
$
- if you don't perform any write commands, all changes you make will be
lost
- if you performed WRITE CURRENT but not WRITE ACTIVE , your changes won't
take place until the next reboot
- if you performed WRITE ACTIVE but not WRITE CURRENT, your changes will
be put back on the next reboot.
An example MODPARAMS.DAT from one small system with almost no users
!
! SYS$SYSDEVICE:[SYS0.SYSEXE]MODPARAMS.DAT
! Created during installation of OpenVMS AXP V7.2-1 8-JUL-1999 12:38:47.03
!
VAXCLUSTER=0 !
SCSNODE="KAWC99" ! our webserver machine
SCSSYSTEMID=15335 ! 14.999 (14 x 1024 + 999 = 15335)
AUTO_DLIGHT_SAV = 1 !
!
maxprocesscnt = 64 !
balsetcnt = 62 ! all our systems MUST HAVE room for at least 40 processes
!
wsmax = 200000 !
tty_buf = 132 !
TTY_TYPAHDSZ = 4096 ! was 78
TTY_ALTYPAHD = 4096 ! was 200
TTY_ALTALARM = 2000 ! was 64
! TTY_DEFCHAR2 = 528386 x enable system password on terminals
TTY_DEFCHAR2 = 4098 !
Notes:
- MAXPROCESSCNT must be at least 2 units higher than
BALSETCNT
- BALSETCNT determines how many processes will be
resident in RAM at one time. If MAXPROCESSCNT was 99 and
BALSETCNT was 33,
then as many as 99-33-2=64 processes "could" be swapped out (waiting for a turn from the processor). You can reduce one form of swapping
by making sure that MAXPROCESSCNT is 2 above
BALSETCNT
- Autogen will tune this system to ensure that 64 processes have 200,000 virtual memory
pagelets. It will do this by making sure the PAGEFILE is large enough.
Remember that individual account settings in UAF may be set up to use much
less. This way, some larger processes will now be able to borrow past their
WSQUOTA (provided WSEXTENT and Pgflquo
are set high enough)
Links:
Back
to OpenVMS
Back
to Home
Neil Rieck
Kitchener - Waterloo - Cambridge, Ontario, Canada.
