MultiNet FAQ: NFS

 

What is the NFS server connection limit?

There is no limit for NFS or UDP in general, though memory, open channel limits, or other system resources could effect the number of connections the NFS server can service.


What does this mean? Server acting 'catatonic' - can't start NFS_SERVERIO processes

If the NFS server can not service creates or writes it could be because it can not start an NFS_SERVERIO process. If a SHOW SYSTEM shows the NFS_SERVER process but no NFS_SERVERIO_X process(es) this is a good indication that the PRCLM (process limit) of the NFS_SERVER is 0. This can be verified by running quota.com (included below) on the NFS_SERVER process and looking for PRCLM. It should be 5 or better.

VEGA> mu config/serv
[Reading in configuration from MULTINET:SERVICES.MASTER_SERVER]
SERVER-CONFIG>select nfs
[The Selected SERVER entry is now NFS]
SERVER-CONFIG>
[PQL PRCLM of NFS set to 5]
SERVER-CONFIG>exit

The following commands show how to set the PRCLM of the NFS_SERVER process:

[quota.com] 
$! quota.com
$! Usage: @QUOTA pid-of-process-to-check
$!
$ if p1 .eqs. ""
$ then
$ Inquire PID
$ else
$ PID = P1
$ Endif
$ astcnt = f$getjpi(pid, "astcnt")
$ astlm = f$getjpi(pid, "astlm")
$ bytcnt = f$getjpi(pid, "bytcnt")
$ bytlm = f$getjpi(pid, "bytlm")
$ pgflquota = f$getjpi(pid, "pgflquota")
$ pagfilcnt = f$getjpi(pid, "pagfilcnt")
$ filcnt = f$getjpi(pid, "filcnt")
$ fillm = f$getjpi(pid, "fillm")
$ enqcnt = f$getjpi(pid, "enqcnt")
$ enqlm = f$getjpi(pid, "enqlm")
$ biocnt = f$getjpi(pid, "biocnt")
$ biolm = f$getjpi(pid, "biolm")
$ diocnt = f$getjpi(pid, "diocnt")
$ diolm = f$getjpi(pid, "diolm")
$ tqcnt = f$getjpi(pid, "tqcnt")
$ tqlm = f$getjpi(pid, "tqlm")
$ prclm = f$getjpi(pid, "prclm")
$ write sys$output "ASTLM: ''ASTLM', remaining: ''ASTCNT'"
$ write sys$output "BYTLM: ''BYTLM', remaining: ''BYTCNT'"
$ write sys$output "PGFLQUOTA: ''PGFLQUOTA', remaining: ''PAGFILCNT'"
$ write sys$output "FILLM: ''fillm', remaining: ''FILCNT'"
$ write sys$output "ENQLM: ''enqlm', remaining: ''enqcnt'"
$ write sys$output "BIOLM: ''biolm', remaining: ''biocnt'"
$ write sys$output "DIOLM: ''diolm', remaining: ''diocnt'"
$ write sys$output "TQLM: ''tqlm', remaining: ''tqcnt'"
$ write sys$output "PRCLM: ''prclm'"

A reboot is required after doing this if the server is running in kernel mode. If the server is running in user mode, you can stop the process and restart the master server.


How to Check and Fix NFS Server Process Quotas

What Are the Symptoms?
The NFS Server will performs poorly if it exhausts its process quotas. You may notice that it spends a lot of CPU time without doing useful work.

How to Check Process Quotas
To check to see whether the NFS Server's process quotas are adequate, pick a time when the server is not behaving as expected, the server is busy, or the server has been up for a long time, and execute the following command procedure:

$! quota.com
$!   Usage: @QUOTA pid-of-process-to-check
$!
$ if p1 .eqs. ""
$ then
$   Inquire PID
$ else
$   PID = P1
$ Endif
$ astcnt = f$getjpi(pid, "astcnt")
$ astlm = f$getjpi(pid, "astlm")
$ bytcnt = f$getjpi(pid, "bytcnt")
$ bytlm = f$getjpi(pid, "bytlm")
$ pgflquota = f$getjpi(pid, "pgflquota")
$ pagfilcnt = f$getjpi(pid, "pagfilcnt")
$ filcnt = f$getjpi(pid, "filcnt")
$ fillm = f$getjpi(pid, "fillm")
$ enqcnt = f$getjpi(pid, "enqcnt")
$ enqlm = f$getjpi(pid, "enqlm")
$ biocnt = f$getjpi(pid, "biocnt")
$ biolm = f$getjpi(pid, "biolm")
$ diocnt = f$getjpi(pid, "diocnt")
$ diolm = f$getjpi(pid, "diolm")
$ tqcnt = f$getjpi(pid, "tqcnt")
$ tqlm = f$getjpi(pid, "tqlm")
$ write sys$output "ASTLM: ''ASTLM', remaining: ''ASTCNT'"
$ write sys$output "BYTLM: ''BYTLM', remaining: ''BYTCNT'"
$ write sys$output "PGFLQUOTA: ''PGFLQUOTA', remaining: ''PAGFILCNT'"
$ write sys$output "FILLM: ''fillm', remaining: ''FILCNT'"
$ write sys$output "ENQLM: ''enqlm', remaining: ''enqcnt'"
$ write sys$output "BIOLM: ''biolm', remaining: ''biocnt'"
$ write sys$output "DIOLM: ''diolm', remaining: ''diocnt'"
$ write sys$output "TQLM: ''tqlm', remaining: ''tqcnt'"

How to Boost Process Quotas
After you have run the program above, if any remaining quota is exhausted or very small, then boost this quota. For example, if you see the following:

  PGFLQUOTA: 60000, remaining: 0

you can boost PGFLQUOTA to about 100000. (Exhausted FILLM is another possible source of a problem.)

$ mu conf/serv
MultiNet Server Configuration Utility V5.6
[Reading in configuration from MULTINET:SERVICES.MASTER_SERVER]
SERVER-CONFIG>sel nfs
[The Selected SERVER entry is now NFS]
SERVER-CONFIG>set pql-pgflquota 100000
SERVER-CONFIG>exit

$ MULTINET NETCONTROL NFS RESTART

If the NFS Server can't restart, you'll have to reboot.

You may also need to boost the SYSGEN CHANNELCNT parameter. Enter the following:

$ ANALYZE/SYSTEM
sda> SET PROCESS NFS_SERVER
sda> SHOW PROCESS/CHANNEL

If you see that the number of channels being used is close to the value of CHANNELCNT, then boost CHANNELCNT and reboot. Note that CHANNELCNT should be larger than your FILLM process quota.

If you need to boost PGFLQUOTA, first ensure that VIRTUALPAGECNT is at least as large and make sure there's adequate room in your system pagefiles.

Note: A common cause of NFS Server problems, when the NFS Server is called upon to process LOTS of concurrent requests, is BYTLM exhaustion. The above QUOTA.COM check may not show the BYTLM problem, because the BYTLM usage can be ephemeral. Therefore, it's suggested that you boost the NFS_SERVER's BYTLM to at least 300000.