本章介绍特定可调参数的更改历史记录。本节中列出的参数与早期发行版中的参数有所不同。另外,还列出了功能已删除的参数。
通过删除文本 "sun4m" 更新了 Solaris 10 说明部分。
Solaris 10 maxphys 缺省值部分中删除了文本 "126,976 (sun4m)"。
在 Solaris 8 版本中,缺省值为 1024。在更高的 Solaris 发行版中,缺省值为 65,536。
通过添加 AMD64 的缺省值和最大值更新了 Solaris 10 说明部分。
Solaris 10 的 SPARC 平台缺省值已更改为 24,576。
通过删除文本 "and sun4m" 并添加文本 "64–bit SPARC and AMD64" 更新了 Solaris 10 说明部分。
通过删除文本 "and sun4d" 更新了 Solaris 9 说明部分。
在早期的 Solaris 9 发行版中,将单位错误地标识为 MB 而不是 8 KB 页。此外,在 Solaris 10 发行版的范围和缺省值说明中删除了以下文本,因为此参数只能用于运行 64 位内核的系统:
32-bit kernels, 512 Mbytes
在 Solaris 10 发行版中,此参数的缺省值从 2000 个事件更改为 5000 个事件。有关更多信息,请参见logevent_max_q_sz。
在 Solaris 8 版本中,将单位错误地描述为 “字节” 而不是 “页”。
在 Solaris 8 版本中,缺省值说明如下:
Maximum of the triplet (200, tune_t_minarmem + 100, [10% of memory available at boot time])
在 Solaris 9 发行版以及早期发行版中,将何时更改说明中的 nfs:nrnode 参数错误地标识为 nfs:nfs_rnode。
Solaris 10 发行版中此参数信息有了很大改变。有关更多信息,请参见bufhwm 和 bufhwm_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_hits 与 buffer_cache_lookups 的比率。这表明缺省设置对于该系统是合适的。
不稳定
Solaris 10 说明已更新为包括文本 "NFS version 4 client"。
Solaris 10 说明已更新为包括文本 "NFS version 4 client"。
Solaris 10 说明已更新为包括文本 "NFS version 4 client"。
Solaris 10 的何时更改文本已更新为包括文本 "NFS version 4 client"。
Solaris 10 缺省值说明已从 32, 768 (32 KB) 更新为 1,048,576 (1 MB)。
在 Solaris 9 和 Solaris 10 发行版中,错误地记录了这些参数的缺省值。正确的缺省值已禁用。有关更多信息,请参见ip_forward_src_routed 和 ip6_forward_src_routed。
Solaris 10 6/06 发行版中增强了此参数,以将 IP 分段成批传送到网络驱动程序。有关更多信息,请参见ip_multidata_outbound。
使网络栈在传输过程中能够一次向网络设备驱动程序发送多个包。
启用此参数可以通过提高主机 CPU 使用率和/或网络吞吐量来减少每个包的处理开销。
多数据传输 (multidata transmit, MDT) 功能仅对支持此功能的设备驱动程序有效。
另请参见tcp_mdt_max_pbufs。
1(启用)
0(禁用)或 1(启用)
是
如果出于调试目的或任何其他原因不希望启用此参数,请将其禁用。
不稳定
Solaris 9 8/03 发行版之后的发行版中对此参数信息进行了显著的更改。有关更多信息,请参见ip_multidata_outbound。
使用此参数,网络栈可以在传输过程中向网络设备驱动程序一次发送多个包。
启用此参数可以通过提高主机 CPU 使用率和/或网络吞吐量,来减少每个包的处理成本。
多数据传输 (multidata transmit, MDT) 功能仅对支持此功能的设备驱动程序有效。
要使用 MDT 参数,必须在 /etc/system 文件中启用以下参数:
set ip:ip_use_dl_cap = 0x1
禁用
0(禁用)、1(启用)
是
可以随时启用此功能,以便在注意以下事项的同时来提高系统性能:
启用此功能可能会更改 IP 层和 DLPI 提供器之间的所有包的外观。因此,使用 ifconfig 的 modinsert 功能(此功能无法识别 MDT STREAMS 数据类型)动态插入 IP 层和 DLPI 提供器之间的任何第三方 STREAMS 模块可能无法工作。
使用 autopush(1m) 机制插入 IP 层和 DLPI 提供器之间的模块也可能无法工作。
如果 STREAMS 模块无法识别 MDT,请将此功能保持为禁用状态。例如,ipfilter、Checkpoint Firewall-1 之类的公共域实用程序无法识别 MDT。
不稳定
在 Solaris 10 6/06 发行版中,修改了此参数的说明。
确定将 TCP/IP 连接与 squeue 关联的模式。
值为 0 时会将新的 TCP/IP 连接与创建此连接的 CPU 进行关联。值 1 会将此连接与随机 CPU 进行关联,从而在系统中的所有 CPU 和所有 squeue 中有效分布负载。
确定将 TCP/IP 连接与 squeue 关联的模式。
值为 0 时会将新的 TCP/IP 连接与创建此连接的 CPU 进行关联。值为 1 时会将此连接与属于不同 CPU 的多个 squeue 进行关联。用于扇出 (fanout) 连接的 squeue 数基于 ip_soft_rings_cnt。
此参数为 Solaris 10 6/06 发行版中的新增参数。有关更多信息,请参见ip_soft_rings_cnt。
在 Solaris 10 发行版中,此参数的名称已更改为 ip_squeue_enter。有关更多信息,请参见ip_squeue_enter。
在 Solaris 10 发行版中,删除了此参数。
带符号整数
512
512 到 1,073,741,824
值应该是 2 的幂。
否。只能在引导系统时更改此参数。
如果将此参数设置为不是 2 的幂的值,则会向上舍入为最接近 2 的幂的数。
如果系统始终具有数万个 TCP 连接,请相应地增大该值。使用缺省值时,TCP 最多可以执行数千个活动连接。请注意,增加散列表大小意味着占用更多内存,因此,请设置适当的值以免造成不必要的内存浪费。
不稳定
在 Solaris 10 发行版中,已将此参数的缺省值更改为启用。有关更多信息,请参见tcp_wscale_always。
在 Solaris 10 发行版中,删除了此参数。
无符号整数
512
512 到 2,147,483,648
此参数应该是 2 的幂。
否。只能在引导系统时更改此参数。
如果将此参数设置为不是 2 的幂的值,则会向上舍入为最接近 2 的幂的数。
如果系统始终具有数万个活动 TCP 连接,请相应地增大该值。使用缺省值时,系统最多可以执行数千个活动连接。请注意,增加散列表大小意味着占用更多内存,因此,请设置适当的值以免造成不必要的内存浪费。
不稳定
在 Solaris 10 发行版中,删除了此参数。
如果设置为 1,则会压缩处于 TIME-WAIT 状态的 TCP 连接的协议控制块,以减小内存使用率。如果设置为 0,则不执行压缩操作。另请参见tcp_time_wait_interval。
1(启用)
0(禁用)、1(启用)
是
请勿禁用压缩机制。
不稳定
在 Solaris 10 发行版中,这些参数已过时。
控制 IP 在接口之间是进行 IPv4 转发还是进行 IPv6 转发。另请参见xxx:ip_forwarding(Solaris 9 发行版)。
0(禁用)
0(禁用)或 1(启用)
是
如果需要 IP 转发,请启用此参数。
不稳定
在 Solaris 10 发行版中,此参数已过时。
针对特定的 xxx 接口启用 IPv4 转发。此参数的确切名称为 interface-name:ip_forwarding。例如,两个接口为 hme0 和 hme1。以下是它们对应的参数名称:
hme0:ip_forwarding 和 hme1:ip_forwarding
0(禁用)
0(禁用)或 1(启用)
是
如果需要 IPv4 转发,请使用此参数针对每个接口启用转发功能。
不稳定
在更高的 Solaris 发行版中,何时更改文本已从:
对于可能收到过多连接请求的应用程序(如 Web 服务器),可以增大缺省值以便与传入速率相匹配。
下面介绍了 tcp_conn_req_max_q0 与每个套接字的最大暂挂连接数之间的关系。
收到连接请求后,TCP 首先检查等待被接受的暂挂 TCP 连接(已执行三次握手)的数目 (N) 是否超过最大侦听器数。如果连接数过多,则会拒绝请求。如果连接数为允许数目,则 TCP 会检查未完成的暂挂 TCP 连接数是否超过 N 与 tcp_conn_req_max_q0 的总和。如果没有超过,则接受请求。否则,会删除最早未完成的暂挂 TCP 请求。
修改为:
对于可能收到过多连接请求的应用程序(如 Web 服务器),可以增大缺省值以便与传入速率相匹配。
下面介绍了 tcp_conn_req_max_q0 与每个套接字的最大暂挂连接数之间的关系。
收到连接请求时,TCP 首先检查侦听器等待被接受的暂挂 TCP 连接(已执行三次握手)数目是否超过最大值 (N)。如果连接数过多,则会拒绝请求。如果连接数为允许数目,则 TCP 会检查未完成的暂挂 TCP 连接数是否超过 N 与 tcp_conn_req_max_q0 的总和。如果没有超过,则接受请求。否则,会删除最早未完成的暂挂 TCP 请求。
在 Solaris 10 发行版中,更改了缺省值和值的范围。
8192 字节
4096 到 65,536 字节
在 Solaris 10 发行版中,更改了缺省值和值的范围。
8192 字节
4096 到 65,536 字节
262, 144 字节
更高的 Solaris 发行版中对此参数信息进行了显著的更改。有关更多信息,请参见sq_max_size。
2 条消息
1 到 0(无限制)
否
当 NCA 在高内存的系统上运行时,请增大此参数以允许驱动程序对更多的数据包进行排队。如果服务器的负载过重,则增大此参数可使模块和驱动程序处理更多数据,而无需丢弃数据包或将其进行存储。
不稳定
本节介绍最新的 Solaris 发行版中过时或已删除的参数。
在 Solaris 9 以及更高发行版中已过时。
Solaris 8 发行版更改了高速缓存文件系统页的方法。这些更改包含优先级分页功能。
请在 /etc/system 文件中同时删除 cachefree 和 priority_paging 设置。
高速缓存更改可以消除文件系统活动对虚拟内存造成的大部分压力。一些统计信息表明会出现以下新行为:
页回收率较高,因为现在可在 I/O 完成之后显式地将页添加到可用列表中。
可用内存现在较高,因为可用内存计数现在包括大量文件高速缓存。
扫描速度显著降低。
过时
在 Solaris 9 以及更高发行版中已过时。
此变量可将 cachefree 设置为 lotsfree 的 2 倍。
Solaris 8 发行版更改了高速缓存文件系统页的方法。这些更改包含优先级分页功能。
请在 /etc/system 文件中同时删除 cachefree 和 priority_paging 设置。
过时
在 Solaris 10 发行版中已过时。
带符号整数
50
0 到 MAXINT
否。已装入 msginfo 结构的 msgmni 字段中。
无
当 msgget(2) 调用返回错误 ENOSPC 时或者根据软件供应商的建议进行更改。
不稳定
在 Solaris 10 发行版中已过时。
可以创建的最大消息数。如果 msgsnd 调用尝试超过此限制,则请求会被延迟直到消息标题可用为止。或者,如果请求设置了 IPC_NOWAIT 标志,则请求会失败,并且出现错误 EAGAIN。
带符号整数
40
0 到 MAXINT
否。已装入 msginfo 结构的 msgtql 字段中。
无
当 msgsnd() 调用阻止或返回错误 EGAIN 时或者根据软件供应商的建议进行更改。
不稳定
在 Solaris 10 发行版中已过时。
无符号长整数
4096
0 到物理内存量
字节
否。已装入 msginfo 结构的 msgmnb 字段中。
无
当 msgsnd() 调用阻止或返回错误 EGAIN 时或者根据软件供应商的建议进行更改。
不稳定
在 Solaris 10 发行版中已删除。
带符号整数
40
0 到 MAXINT
否。已装入 msginfo 结构的 msgtql 字段中。
将为了支持消息和队列而创建的最大数量的数据结构所占的空间与装入模块时的可用内核内存的 25% 进行比较。如果数据结构数过大,则会拒绝装入消息队列模块,并且功能不可用。此计算包括可能由消息占用的空间。仅当首次装入模块时,才会出现这种情况。
当缺省值不够时进行更改。通常根据软件供应商的建议进行更改。
过时
在 Solaris 10 发行版中已删除。
系统支持的消息数。
带符号整数
100
0 到 MAXINT
否
将为了支持消息和队列而创建的最大数量的数据结构所占的空间与装入模块时的可用内核内存的 25% 进行比较。如果数据结构数过大,则会拒绝装入消息队列模块,并且功能不可用。此计算包括可能由消息占用的空间。仅当首次装入模块时,才会出现这种情况。
当缺省值不够时进行更改。通常根据软件供应商的建议进行更改。
过时
在 Solaris 10 发行版中已删除。
系统用作可用消息内存池的 msginfo_msgssz 段数。可用于消息的总内存为 msginfo_msgseg * msginfo_msgssz。
带符号短整数
1024
0 到 32,767
否
将为了支持消息和队列而创建的最大数量的数据结构所占的空间与装入模块时的可用内核内存的 25% 进行比较。如果数据结构数过大,则会拒绝装入消息队列模块,并且功能不可用。此计算不包括可能由消息占用的空间。仅当首次装入模块时,才会出现这种情况。
当缺省值不够时进行更改。通常根据软件供应商的建议进行更改。
过时
在 Solaris 10 发行版中已删除。
无符号长整数
2048
0 到物理内存量
字节
否。已装入 msginfo 结构的 msgmax 字段中。
无
当 msgsnd(2) 调用返回错误 EINVAL 时或者根据软件供应商的建议进行更改。
不稳定
在 Solaris 10 发行版中已过时。
带符号整数
10
1 到 65,535
否
与 SEMA_INDEX_MAX(当前为 65,535)进行比较,如果数值较大,则重置为该值。警告消息会写入到控制台或消息文件中,或者同时写入到两者中。
当缺省集数不够时进行更改。通常根据软件供应商的建议进行更改。如果尝试创建的集数多于当前配置的集数,则不会显示任何错误消息。相反,应用程序会收到来自 semget 调用的返回代码 ENOSPC。
有关更多信息,请参见semget(2)。
不稳定
在 Solaris 10 发行版中已过时。
带符号整数
25
1 到 MAXINT
否
将信号及其支持数据结构可能占用的空间量与首次装入模块时的可用内核内存的 25% 进行比较。如果超过了内存阈值,则会拒绝装入模块,并且信号功能不可用。
当缺省值不够时进行更改。通常根据软件供应商的建议进行更改。如果尝试在一个集中创建的信号数多于当前配置的信号数,则不会显示任何错误消息。应用程序会收到来自 semget(2) 调用的返回代码 EINVAL。
不稳定
在 Solaris 10 发行版中已过时。
指定每个 semop 调用的最大 System V 信号操作数。此参数是指 sops 阵列中为 semop() 系统调用提供的 sembufs 的数目。有关更多信息,请参见 semop(2)。
带符号整数
10
1 到 MAXINT
否
将信号及其支持数据结构可能占用的空间量与首次装入模块时的可用内核内存的 25% 进行比较。如果超过了内存阈值,则会拒绝装入模块,并且信号功能不可用。
当缺省值不够时进行更改。通常根据软件供应商的建议进行更改。如果尝试在单个 semop 调用中执行的信号操作数多于当前允许的信号操作数,则不会显示任何错误消息。相反,应用程序会收到来自 semop() 调用的返回代码 E2BIG。
不稳定
在 Solaris 10 发行版中已删除。
带符号整数
60
1 到 MAXINT
否
将信号及其支持数据结构可能占用的空间量与首次装入模块时的可用内核内存的 25% 进行比较。如果超过了内存阈值,则会拒绝装入模块,并且信号功能不可用。
当缺省信号数不够时进行更改。通常根据软件供应商的建议进行更改。如果尝试创建的信号数多于当前配置的信号数,则不会显示任何错误消息。应用程序会收到来自 semget(2) 调用的返回代码 ENOSPC。
不稳定
在 Solaris 10 发行版中已删除。
带符号整数
30
1 到 MAXINT
否
将信号及其支持数据结构可能占用的空间量与首次装入模块时的可用内核内存的 25% 进行比较。如果超过了内存阈值,则会拒绝装入模块,并且信号功能不可用。
当缺省值不够时进行更改。通常根据软件供应商的建议进行更改。如果尝试执行的撤消操作数多于当前配置的撤消操作数,则不会显示任何错误消息。系统用完撤消结构时,应用程序会收到来自 semop(2) 调用的返回值 ENOSPC。
不稳定
在 Solaris 10 发行版中已删除。
带符号整数
10
1 到 MAXINT
否
将信号及其支持数据结构可能占用的空间量与首次装入模块时的可用内核内存的 25% 进行比较。如果超过了内存阈值,则会拒绝装入模块,并且信号功能不可用。
当缺省值不够时进行更改。通常根据软件供应商的建议进行更改。如果尝试执行的撤消操作数多于当前配置的撤消操作数,则不会显示任何错误消息。应用程序会收到来自 semop(2) 调用的返回代码 EINVAL。
不稳定
在 Solaris 10 发行版中已删除。
无符号短整数
32,767
1 到 65,535
否
无
当缺省值不够时进行更改。通常根据软件供应商的建议进行更改。如果超过了最大值,则不会显示任何错误消息。应用程序会收到来自 semop(2) 调用的返回代码 ERANGE。
不稳定
在 Solaris 10 发行版中已删除。
无符号短整数
16,384
1 到 65,535
否
无
当缺省值不够时进行更改。通常根据软件供应商的建议进行更改。如果尝试执行的撤消操作数多于当前配置的撤消操作数,则不会显示任何错误消息。应用程序会收到来自 semop(2) 调用的返回代码 EINVAL。
不稳定
在 Solaris 8 发行版中已过时。在内核中提供此变量是出于兼容性原因,但不会再使用它。
在 Solaris 8 发行版中已过时。将忽略输入的任何值。
在 Solaris 10 发行版中已过时。
带符号整数
100
0 到 MAXINT
否。已装入 shminfo 结构的 shmmni 字段中。
将根据装入模块时的当前可用内核内存的 25%,对支持 System V 共享内存的最大可能数量的数据结构占用的空间量进行检查。如果占用的内存过大,则尝试装入模块时会失败。
当系统限制过低时进行更改。通常根据软件供应商的建议进行更改。
不稳定
在 Solaris 10 发行版中已过时。
可以创建的 System V 共享内存段的最大大小。此参数是指在应用程序查看其是否实际具有创建请求的内存段所需物理资源之前检查的上限。
尝试创建大小为零或大于指定值的共享内存段时将失败,并且出现 EINVAL 错误。
此参数仅指定操作系统可以接受的共享内存段大小的最大值。能否创建内存段完全取决于系统上的可用交换空间量,对于 32 位进程,还取决于要附加的内存段的进程地址空间中是否具有足够的可用空间。
无符号长整数
8,388,608
在 32 位系统上,为 0 到 MAXUINT32;在 64 位系统上,为 0 到 MAXUINT64。
字节
否。已装入 shminfo 结构的 shmmax 字段中。
无
当缺省值过低时进行更改。通常根据软件供应商的建议进行更改,但是,如果不需要限定共享内存段的大小,则将此参数设置为可能的最大值不会产生负面影响。
不稳定
在 Solaris 9 发行版中已过时。在内核中提供此变量是出于兼容性原因,但不会再使用它。
在 Solaris 9 发行版中已过时。在内核中提供此变量是出于兼容性原因,但不会再使用它。