Several parameters (or variables) are used to control the number of processes that are available on the system and the number of processes that an individual user can create. The foundation parameter is maxusers. This parameter drives the values assigned to max_nprocs and maxuprc.
Specifies the maximum number of processes that can be created on a system. Includes system processes and user processes. Any value specified in /etc/system.dfile is used in the computation of maxuprc.
Determining the size of the directory name lookup cache (if ncsize is not specified)
Verifying that the amount of memory used by configured system V semaphores does not exceed system limits
Configuring Hardware Address Translation resources for x86 platforms
10 + (16 x maxusers) if maxusers is set in /etc/system.d/file
The larger of 30,000 or 10 + (128 x number of CPUs), if maxusers is not set in /etc/system.d/file
26 to value of maxpid
Yes. If the value exceeds maxpid, it is set to maxpid .
Changing this parameter is one of the steps necessary to enable support for more than 30,000 processes on a system.
max_nprocs - reserved_procs
1 to max_nprocs - reserved_procs
Yes. This value is compared to max_nprocs - reserved_procs and set to the smaller of the two values.
When you want to specify a hard limit for the number of processes a user can create that is less than the default value of however many processes the system can create. Attempting to exceed this limit generates the following warning messages on the console or in the messages file:
out of per-user processes for uid N
Originally, maxusers defined the number of logged in users the system could support. When a kernel was generated, various tables were sized based on this setting. Current Oracle Solaris releases do much of its sizing based on the amount of memory on the system. Thus, much of the past use of maxusers has changed. The following list identifies subsystems that are still derived from maxusers:
The maximum number of processes on the system
The number of quota structures held in the system
The size of the directory name look-up cache (DNLC)
Lesser of the amount of memory in MB or 2048, and the greater of that value and nCPUs x 8
1 to the greater of 2048 or nCPUs x 8, based on the size of physical memory, if not set in /etc/system.d/file
1 to the greater of 4096 or the nCPUs x 8, if set in /etc/system.d/file
No. After computation of dependent parameters is done, maxusers is never referenced again.
If the value is greater than the maximum allowed, it is reset to the maximum. A message to that effect is displayed.
When the default number of user processes derived by the system is too low. This situation is evident when the following message displays on the system console:
out of processes
You might also change this parameter when the default number of processes is too high, as in these situations:
Database servers that have a lot of memory and relatively few running processes can save system memory when the default value of maxusers is reduced.
If file servers have a lot of memory and few running processes, you might reduce this value. However, you should explicitly set the size of the DNLC. See ncsize Parameter.
16 to 1024
Yes. If ngroups_max is set to an invalid value, it is automatically reset to the closest legal value. For example, if it is set to less than zero, it is reset to 0. If it is set to greater than 1024, it is reset to 1024.
Review the following considerations if you are using NFS AUTH_SYS authentication and you want to increase the default ngroups_max value:
If ngroups_max is set to 16 or if the NFS client's AUTH_SYS credential that is provided has 15 or fewer groups, the client's group information is used.
If ngroups_max is set to greater than 16 and the NFS client's AUTH_SYS credential from the name server contains exactly 16 groups, the maximum allowed, the NFS server consults the name server and matches the client's UID to a user name. Then, the name server computes a list of groups to which the user belongs.
Any attempts to set maxpid by adding an entry to a file in the /etc/system.d directory have no effect.
5 to 999,999
No. Used only at boot time to set the value of pidmax.
Yes. Value is compared to the value of reserved_procs and 999,999. If less than reserved_procs or greater than 999,999, the value is set to 999,999.
max_nprocs range checking ensures that max_nprocs is always less than or equal to this value.
Required to enable support for more than 30,000 processes on a system. See also max_nprocs Parameter.
5 to MAXINT
No. Not used after the initial parameter computation.
Any /etc/system.d/file setting is honored.
Consider increasing to 10 + the normal number of UID 0 (root) processes on system. This setting provides some cushion should it be necessary to obtain a root shell when the system is otherwise unable to create user-level processes.