可使用几个参数(或变量)来控制系统上的可用进程数以及单个用户可以创建的进程数。基础参数为 maxusers。此参数确定指定给 max_nprocs 和 maxuprc 的值。
最初,maxusers 定义系统可以支持的登录用户数。生成内核时,将基于该设置调整各种表的大小。当前 Solaris 发行版会基于系统上的内存量执行大量大小调整操作。因此,maxusers 过去的许多用法都已发生更改。仍由 maxusers 派生的许多子参数包括:
系统上的最大进程数
系统中保留的配额结构数
目录名称查找高速缓存 (directory name look-up cache, DNLC) 的大小
带符号整数
内存量(以 MB 为单位)与 2048 之间的较小值
1 到 2048(如果未在 /etc/system 文件中设置,则基于物理内存设置)
1 到 4096(如果在 /etc/system 文件中设置)
用户
否。计算完相关参数之后,便不再引用 maxusers。
无
由系统派生的缺省用户进程数太少时。在这种情况下,系统控制台将显示以下消息:
out of processes |
当缺省进程数太多时,也可能要更改此参数,例如以下情况:
减小 maxusers 的缺省值时,具有大量内存但运行的进程相对较少的数据库服务器可以节省系统内存。
如果文件服务器具有大量内存但运行的进程较少,则可能要减小此值。不过,应显式设置 DNLC 的大小。请参见ncsize。
如果计算服务器具有大量内存但运行的进程较少,则可能要减小此值。
不稳定
指定要在进程表中为具有超级用户 UID (0) 的进程保留的系统进程槽数。例如,fsflush 具有超级用户 UID (0)。
带符号整数
5
5 到 MAXINT
进程
否。计算完初始参数之后便不再使用。
从 Solaris 8 发行版开始,不会忽略任何 /etc/system 设置。
不稳定
考虑增加到 10 + 系统上正常 UID 0(超级用户)进程数。当需要获取根 shell,否则系统便无法创建用户级进程时,该设置可提供一定程度的缓解。
指定可能的最大进程 ID 值。对 Solaris 8 以及更高发行版有效。
pidmax 设置 maxpid 变量的值。设置 maxpid 之后,便会忽略 pidmax。maxpid 在内核中的其他位置使用,用于确定最大进程 ID 和进行验证检查。
任何通过向 /etc/system 文件中添加项以设置 maxpid 的尝试都将无效。
带符号整数
30,000
266 到 999,999
进程
否。仅在引导时用于设置 pidmax 的值。
是。会将此值与 reserved_procs 的值和 999,999 进行比较。如果此值小于 reserved_procs 或大于 999,999,则将其设置为 999,999。
检查 max_nprocs 范围可确保 max_nprocs 始终小于或等于此值。
需要在系统上启用对多于 30,000 个进程的支持时。
不稳定
指定可在系统上创建的最大进程数。包括系统进程和用户进程。使用 /etc/system 中指定的任一值来计算 maxuprc。
此值还可用来确定几个其他系统数据结构的大小。此参数还将在以下其他数据结构中起作用:
确定目录名称查找高速缓存的大小(如果未指定 ncsize)
为 UFS 分配磁盘配额结构(如果未指定 ndquot)
检验已配置的 System V 信号所使用的内存量是否未超过系统限制
为 x86 平台配置硬件地址转换资源。
带符号整数
10 + (16 x maxusers)
266 到 maxpid 的值
否
是。将此值与 maxpid 进行比较,如果此值较大,则将其设置为 maxpid。在 x86 平台上,还会根据特定于平台的值进行其他检查。将 max_nprocs 设置为三个值(max_nprocs、maxpid、平台值)中的最小者。SPARC 和 x86 平台都使用 65,534 作为平台值。
更改此参数是在系统上启用对多于 30,000 个进程的支持所必需的一步。
不稳定
有关信息,请参见max_nprocs(Solaris 9 发行版)。