Solaris 可调参数参考手册

内核参数

进程大小可调参数

max_nprocs(Solaris 9 发行版)

通过删除文本 "sun4m" 更新了 Solaris 10 说明部分。

常规 I/O 可调参数

maxphys(Solaris 9 发行版)

Solaris 10 maxphys 缺省值部分中删除了文本 "126,976 (sun4m)"。

rlim_fd_max(Solaris 8 发行版)

在 Solaris 8 版本中,缺省值为 1024。在更高的 Solaris 发行版中,缺省值为 65,536。

常规内核参数和内存参数

lwp_default_stksize(Solaris 9 发行版)

通过添加 AMD64 的缺省值和最大值更新了 Solaris 10 说明部分。

Solaris 10 的 SPARC 平台缺省值已更改为 24,576。

noexec_user_stack(Solaris 9 发行版)

通过删除文本 "and sun4m" 并添加文本 "64–bit SPARC and AMD64" 更新了 Solaris 10 说明部分。

noexec_user_stack(Solaris 2.6、7 和 8 发行版)

通过删除文本 "and sun4d" 更新了 Solaris 9 说明部分。

segkpsize(Solaris 9 12/02 发行版)

在早期的 Solaris 9 发行版中,将单位错误地标识为 MB 而不是 8 KB 页。此外,在 Solaris 10 发行版的范围和缺省值说明中删除了以下文本,因为此参数只能用于运行 64 位内核的系统:

32-bit kernels, 512 Mbytes

logevent_max_q_sz(Solaris 9 发行版)

在 Solaris 10 发行版中,此参数的缺省值从 2000 个事件更改为 5000 个事件。有关更多信息,请参见logevent_max_q_sz

与分页相关的可调参数

tmpfs:tmpfs_minfree(Solaris 8 发行版)

在 Solaris 8 版本中,将单位错误地描述为 “字节” 而不是 “页”。

pages_pp_maximum(Solaris 9 发行版之前的 Solaris 发行版)

在 Solaris 8 版本中,缺省值说明如下:

Maximum of the triplet (200, tune_t_minarmem + 100, [10% of memory available at boot time])

常规文件系统参数

ncsize(Solaris 9 以及早期发行版)

在 Solaris 9 发行版以及早期发行版中,将何时更改说明中的 nfs:nrnode 参数错误地标识为 nfs:nfs_rnode

UFS 可调参数

bufhwm(Solaris 9 发行版)

Solaris 10 发行版中此参数信息有了很大改变。有关更多信息,请参见bufhwmbufhwm_pct

说明

用于高速缓存 I/O 缓冲区的最大内存量。这些缓冲区用于写入文件系统元数据(超级块、inode、间接块和目录)。可以根据需要分配缓冲区,直到要分配的量超过 bufhwm 为止。此时,将回收足够的缓冲区以满足请求。

鉴于历史原因,此参数不需要 ufs: 前缀。

数据类型

带符号整数

缺省值

物理内存的 2%

范围

80 KB 到物理内存的 20%

单位

KB

是否为动态

否。参数值首先用于计算散列桶的大小,然后会存储到可在分配和解除分配缓冲区时调整字段值的数据结构中。在正在运行的系统上,不遵守封锁协议而直接尝试调整此值可能会导致错误操作。

验证

如果 bufhwm 小于 80 KB,或者大于物理内存的 20% 与当前内核堆大小的两倍之间的较小者,则此参数会重置为物理内存的 20% 与当前内核堆大小的两倍之间的较小者。系统控制台上和 /var/adm/messages 文件中会出现以下消息。


"binit: bufhwm out of range (value attempted). Using N."

"value attempted" 是指在 /etc/system 中输入的值或者使用 kadb -d 命令输入的值。N 是系统基于可用系统内存计算所得的值。

何时更改

由于仅在需要时才会分配缓冲区,因此,缺省设置的开销是由于分配多个控制结构以处理尽可能多的缓冲区产生的。在 32 位内核上,这些结构在每个可能的缓冲区中会占用 52 字节;在 64 位内核上,在每个可能的缓冲区中会占用 104 字节。在 512 MB 的 64 位内核上,将占用 104*10144 字节(约 1 MB)。标题分配假设缓冲区大小为 1 KB,尽管在大多数情况下缓冲区大小大于该值。

通过使用内核调试程序查看内核中的 bfreelist 结构,可以找出缓冲池中尚未分配的内存量。结构中的关键字段为 bufsize,此字段是指可能的剩余内存(以字节为单位)。可以使用 mdb 通过 buf 宏查看此字段:


# mdb -kLoading modules: [ unix krtld genunix ip nfs ipc ]

> bfreelist$<buf

bfreelist:

[ elided ]

bfreelist + 0x78:	bufsize			[ elided ]

				 	      75734016

在内存为 6 GB 的此系统上,bufhwm 为 122277。不能直接确定所使用的标题结构数,因为请求的实际缓冲区大小通常大于 1 KB。但是,可以从此系统的控制结构分配中有利地回收一些空间。

如果 512 MB 系统上有相同结构,则表明 10144 KB 中仅有 4 KB 尚未分配。使用 kstat -n biostats 检查 biostats kstat 时,还会发现系统具有合理的 buffer_cache_hitsbuffer_cache_lookups 的比率。这表明缺省设置对于该系统是合适的。

承诺级别

不稳定