第2 章• Solaris 内核可调参数31
单位字节,大小为getpagesize 参数返回的值的倍数。有关更多信息,请参见
getpagesize(3C)。
是否为动态是。影响更改变量之后创建的线程。
验证必须大于或等于8192,并且小于或等于262,144 (256 x 1024)。同时,还必
须是系统页面大小的倍数。如果不满足这些条件,则会显示以下消息:
Illegal stack size, Using N
值N 为lwp_default_stksize 的缺省值。
何时更改系统由于用完栈空间而发出警告音时。此问题的最佳解决方案是确定系
统用完空间的原因,然后再进行更正。
增大缺省栈大小意味着几乎每个内核线程都将具有更大的栈,从而导致
无故增加内核内存消耗。通常不会使用增加的空间。消耗增加意味着争
用同一内存池的其他资源具有的可用空间量将减少,从而可能会降低系
统执行操作的能力。其中一个负面影响是内核可创建的线程数减少。在
找出根本原因并解决问题之前,只应将此解决方案作为一种临时解决方
法。
承诺级别不稳定
更改历史记录有关信息,请参见第156 页中的“lwp_default_stksize(Solaris 9 发行
版)”。
logevent_max_q_sz
说明允许排队等待传送到syseventd 守护进程的最大系统事件数。一旦系统事
件队列的大小达到此限制,便不再允许向队列中添加任何其他系统事
件。
数据类型整数
缺省值5000
范围0 到MAXINT
单位系统事件
是否为动态是
验证每当ddi_log_sysevent 和sysevent_post_event 生成系统事件时,系统事
件框架都会检查此值。
有关更多信息,请参见ddi_log_sysevent(9F) 和
sysevent_post_event (3SYSEVENT)。
何时更改错误日志消息指示无法记录、生成或发布系统事件时。
常规内核参数和内存参数
32 Solaris 可调参数参考手册• 2006 年10 月
承诺级别不稳定
更改历史记录有关信息,请参见第156 页中的“logevent_max_q_sz(Solaris 9 发行版)
”。
segkpsize
说明指定可用的内核可分页内存量。此内存主要用于内核线程栈。增大此数
值可允许相同数量的线程使用更大的栈或允许存在更多的线程。只能在
运行64 位内核的系统上设置此参数。运行64 位内核的系统使用的缺省栈
大小为24 KB。
数据类型无符号长整数
缺省值对于64 位内核,为2GB
对于32 位内核,为512MB
范围对于64 位内核,为512MB到24 GB
单位8KB页
是否为动态否
验证将此值与最小值和最大值(对于64 位系统,分别为512MB和24 GB)进
行比较。如果此值小于最小值或大于最大值,则将其重置为2GB,同时
显示相关消息。
创建高速缓存时使用的实际大小是验证检查之后在segkpsize 中指定的值
和物理内存的50% 之间的较小值。
何时更改需要支持系统上的大量进程时。缺省大小为2GB(假设至少存在1GB的
物理内存)。此缺省大小允许为多于87,000 个的内核线程创建24 KB 的
栈。在64 位内核中,无论进程是32 位进程还是64 位进程,栈的大小都
相同。如果所需大小超过此值,则可以增大segkpsize(假设存在足够的
物理内存)。
承诺级别不稳定
更改历史记录有关信息,请参见第156 页中的“segkpsize(Solaris 9 12/02 发行版)
”。
noexec_user_stack
说明用于将栈标记为不可执行,这样可阻止缓冲区溢出***。
常规内核参数和内存参数
第2 章• Solaris 内核可调参数33
缺省情况下,运行64 位内核的Solaris 系统将所有64 位应用程序的栈都标
记为不可执行。要使32 位应用程序不能在运行64 位或32 位内核的系统
上执行,则有必要设置此参数。
注– 此参数存在于所有运行Solaris 2.6、7、8、9 或10 发行版的系统上,但
它仅对64 位SPARC 和AMD64 体系结构有效。
数据类型带符号整数
缺省值0(禁用)
范围0(禁用)或1(启用)
单位切换(开/关)
是否为动态是。不会影响当前正在运行的进程,只影响在设置此值之后创建的进
程。
验证无
何时更改应始终处于启用状态,除非应用程序要故意在不使用mprotect 的情况下
在栈中放置可执行代码以使栈可执行。有关更多信息,请参见
mprotect(2)。
承诺级别不稳定
更改历史记录有关信息,请参见第156 页中的“noexec_user_stack(Solaris 9 发行版)
”。
fsflush 及相关参数
本节介绍fsflush 及相关可调参数。
fsflush
定期运行系统守护进程fsflush 以执行以下三项主要任务:
1. 每次调用时,fsflush 都会将一段时间内的脏文件系统页刷新到磁盘。
2. 每次调用时,fsflush 都会检查部分内存并将已修改的页写入其后备存储。如果页已经
过修改,并且不满足以下任一条件,则会写入页:
 页为内核页
 页为可用页
 页为锁定页
 页与交换设备关联
 页当前参与I/O 操作
fsflush 及相关参数
34 Solaris 可调参数参考手册• 2006 年10 月
实际结果是刷新文件中使用具有写入权限的mmap 进行映射的页以及实际已更改的页。
页会被刷新到后备存储,但是仍与使用它们的进程保持连接。当系统在低内存的情况下
运行时,如果自刷新以来页未被修改过,则这种方式可以避免因先将页写入后备存储而
后再声明页所造成的延迟,从而简化页的回收过程。
3. fsflush 将文件系统元数据写入磁盘。每进行n 次调用便执行一次此写入操作,其中n
根据各种配置变量计算得出。有关详细信息,请参见第35 页中的“tune_t_fsflushr”
和第35 页中的“autoup”。
可以配置以下功能:
 调用的频率(tune_t_fsflushr)
 是否执行内存扫描(dopageflush)
 是否进行文件系统数据刷新(doiflush)
 文件系统数据的刷新频率(autoup)
对于大多数系统,内存扫描和文件系统元数据同步是fsflush 的主要活动。根据系统的使用
情况,内存扫描可能很少使用,否则会占用过多的CPU 时间。
tune_t_fsflushr
说明指定fsflush 调用的间隔秒数
数据类型带符号整数
缺省值1
范围1 到MAXINT
单位秒
是否为动态否
验证如果此值小于或等于零,则会将其重置为1 并显示警告消息。仅在引导时执
行此检查。
何时更改请参见autoup 参数。
承诺级别不稳定
autoup
说明autoup 与tune_t_flushr 一起控制每次调用时检查其中脏页的内存量以及文
件系统同步操作的频率。
fsflush 及相关参数
第2 章• Solaris 内核可调参数35
autoup 的值还可用于控制是否将缓冲区从可用列表写出。每当带有
B_DELWRI 标志(标识已更改的文件内容页)的缓冲区在列表中的存在时间
超过autoup 秒时,便会将其写出。增大autoup 的值可延长缓冲区在内存中
的保留时间。
数据类型带符号整数
缺省值30
范围1 到MAXINT
单位秒
是否为动态否
验证如果autoup 小于或等于零,则会将其重置为30 并显示警告消息。仅在引导
时执行此检查。
含义autoup 应该是tune_t_fsflushr 的整数倍。autoup 至少应该是
tune_t_fsflushr 值的6 倍。否则,每次调用fsflush 时,都会扫描过多的
内存量。
系统总页数与tune_t_fsflushr 的乘积应大于或等于autoup,以便在
dopageflush 不为零时检查内存。
何时更改在下列情况下,可能要更改autoup 和/或tune_t_fsflushr 参数:
 内存较大的系统-在这种情况下,增大autoup 会减小每次调用fsflush
时扫描的内存量。
 内存需求最低的系统-同时增大autoup 和tune_t_fsflushr 会减少扫描
次数。同时增大autoup 是为了维护当前的autoup / tune_t_fsflushr 比
率。
 具有大量瞬态文件的系统(例如,邮件服务器或软件生成计算机)-如
果创建了大量文件然后将其删除,则fsflush 可能不必将这些文件的数
据页写入磁盘。
承诺级别不稳定
dopageflush
说明控制是否在调用fsflush 期间检查内存中已修改的页。每次调用fsflush
时,都会确定系统中的内存页数。此数值可能会因动态重新配置操作而发
生了更改。每次调用都使用以下算法进行扫描:总页数x tune_t_fsflushr /
autoup 页数
数据类型带符号整数
缺省值1(启用)
范围0(禁用)或1(启用)
fsflush 及相关参数
36 Solaris 可调参数参考手册• 2006 年10 月
单位切换(开/关)
是否为动态是
验证无
何时更改如果系统页面扫描程序很少运行(由vmstat 输出的sr 列中的0 值指示)。
承诺级别不稳定
doiflush
说明控制是否在调用fsflush 期间执行文件系统元数据同步。每进行N 次
fsflush 调用便会执行一次此同步操作,其中N= (autoup /
tune_t_fsflushr)。由于此算法是整数除法,因此,如果tune_t_fsflushr
大于autoup,则每次调用fsflush 时都会执行同步,因为代码会检查其重复
计数器,看是大于还是等于N。请注意,每次调用fsflush 时都会计算N 一
次。随后对tune_t_fsflushr 或autoup 所做的更改不会影响同步操作的频
率。
数据类型带符号整数
缺省值1(启用)
范围0(禁用)或1(启用)
单位切换(开/关)
是否为动态是
验证无
何时更改一段时间内频繁修改文件并且刷新操作引起的负载扰乱了系统行为。
如果文件的存在性以及状态的一致性在重新引导系统时都无关紧要,则最
好将这些文件保留在TMPFS 文件系统(如/tmp)中。从Solaris 7 发行版开
始,可以使用mount -noatime 选项减少系统上的inode 通信流量。此选项可
避免在访问文件时进行inode 更新。
对于参与实时处理的系统,可能需要禁用此选项并使用显式应用程序文件
同步来实现一致性。
承诺级别不稳定
fsflush 及相关参数
第2 章• Solaris 内核可调参数37
进程大小调整参数
可使用几个参数(或变量)来控制系统上的可用进程数以及单个用户可以创建的进程数。
基础参数为maxusers。此参数确定指定给max_nprocs 和maxuprc 的值。
maxusers
说明最初,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 的大小。请参见第57 页中的“ncsize”。
 如果计算服务器具有大量内存但运行的进程较少,则可能要减小此值。
承诺级别不稳定
进程大小调整参数
38 Solaris 可调参数参考手册• 2006 年10 月
reserved_procs
说明指定要在进程表中为具有超级用户UID (0) 的进程保留的系统进程槽数。例
如,fsflush 具有超级用户UID (0)。
数据类型带符号整数
缺省值5
范围5 到MAXINT
单位进程
是否为动态否。计算完初始参数之后便不再使用。
验证从Solaris 8 发行版开始,不会忽略任何/etc/system 设置。
承诺级别不稳定
何时更改考虑增加到10 + 系统上正常UID 0(超级用户)进程数。当需要获取根
shell,否则系统便无法创建用户级进程时,该设置可提供一定程度的缓解。
pidmax
说明指定可能的最大进程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 个进程的支持时。
承诺级别不稳定
进程大小调整参数
第2 章• Solaris 内核可调参数39
max_nprocs
说明指定可在系统上创建的最大进程数。包括系统进程和用户进程。使用
/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 个进程的支持所必需的一步。
承诺级别不稳定
更改历史记录有关信息,请参见第155 页中的“max_nprocs(Solaris 9 发行版)”。
maxuprc
说明指定任一用户可在系统上创建的最大进程数。
数据类型带符号整数
缺省值max_nprocs - reserved_procs
范围1 到max_nprocs - reserved_procs
单位进程
是否为动态否
验证是。会将此值与max_nprocs - reserved_procs 进行比较,并将其设置为这两
个值中的较小者。
何时更改需要对用户可创建的进程数指定硬限制,使其小于系统可创建进程数的缺
省值时。尝试超过此限制时,会在控制台上或消息文件中生成以下警告消
息:
进程大小调整参数
40 Solaris 可调参数参考手册• 2006 年10 月
out of per-user processes for uid N
承诺级别不稳定
与分页相关的参数
Solaris OS 使用按需分页的虚拟内存系统。系统运行时,会根据需要将页放入内存。当占用
的内存超过特定阈值并且内存需求不断增加时,便会开始分页。可以通过几个级别进行分
页,这些级别由特定参数控制。
常规分页算法如下:
 发现内存不足。页面扫描程序线程将运行并开始扫描内存。将采用两步算法:
1. 将页标记为未使用。
2. 如果在一段时间间隔之后仍未使用,则将此页视为回收对象。
如果该页已经过修改,则会向页出线程发出调度该页以执行I/O 的请求。此外,页面扫
描程序会继续查看内存。页出会导致将该页写入其后备存储并放入可用列表中。页面扫
描程序扫描内存时,不会对页的来源进行区分。页可能来自数据文件,也可能来自可执
行文件的文本、数据或栈。
 随着系统内存压力的增大,此算法会越来越主动地调整将被它视为回收候选对象的页的
数目以及分页算法运行的频率。(有关更多信息,请参见第46 页中的“fastscan”和
第47 页中的“slowscan”。)随着可用内存从lotsfree 降到minfree,系统会将每次
调用页出线程时扫描的内存量从slowscan 指定的值线性增大到fastscan 指定的值。系
统使用desfree 参数来控制许多有关资源使用和行为的决策。
最初,系统限定自身针对pageout 操作所使用的CPU 百分比不超过4%。随着内存压力的增
大,为支持pageout 操作而占用的CPU 时间会线性增大,直到最多占用CPU 的80% 为止。
此算法将扫描slowscan 和fastscan 之间的某一内存量,然后在出现下列任一情况时停止扫
描:
 已找到足以解决内存不足问题的页。
 已查看了计划的页数。
 使用了过多的时间。
如果页出线程完成其扫描时仍存在内存不足问题,则在接下来的1/4 秒时间内将安排其他扫
描。
从Solaris 9 发行版开始,更改了分页子系统的配置机制。系统将在引导时确定fastscan、
slowscan 和handspreadpages 参数的相应设置,而不是依赖于这些参数的一组预定义值。在
/etc/system 文件中设置这些参数中的任何一个都会导致系统使用非最优值。
与分页相关的参数
第2 章• Solaris 内核可调参数41
注意– 请从/etc/system 文件中删除所有的VM系统调优。请使用缺省设置运行,并确定是
否有必要调整这些参数。请勿设置cachefree 或priority_paging。从Solaris 9 发行版开
始,已经删除了这两个参数。
从Solaris 75/99 发行版开始,支持CPU 和内存的动态重新配置(dynamic reconfiguration,
DR)。执行涉及添加或删除内存的DR 操作的系统将重新计算相关参数的值,除非已在
/etc/system 中显式设置参数。如果已显式设置,将使用/etc/system 中指定的值,除非违
反了有关变量值的约束。如果违反了有关约束,将重置值。
lotsfree
说明用作开始系统分页的初始触发器。超过此阈值时,会唤醒页面扫描程序以
开始查找要回收的内存页。
数据类型无符号长整数
缺省值物理内存的1/64 与512 KB 之间的较大值
范围最小值为512 KB 与物理内存的1/64 之间的较大值,以页表示,其页大小为
getpagesize 的返回值。有关更多信息,请参见getpagesize(3C)。
最大值为物理内存页数。最大值不应大于物理内存的30%。系统不会强制
执行此范围,“验证”部分介绍的内容除外。
单位页
是否为动态是,但是如果执行基于内存的DR 操作,则动态更改会丢失。
验证如果lotsfree 大于物理内存量,则会将值重置为缺省值。
含义应始终维护以下关系:lotsfree 大于desfree,而后者大于minfree。
何时更改页需求急剧增加,而内存算法可能无法跟上需求时。一种解决方法是提前
一段时间开始回收内存。此解决方案为分页系统提供了额外的时间。
一种单凭经验的方法是将此参数设置为系统需要在几秒时间内分配的内存
页数的2 倍。此参数与工作负荷相关。DBMS 服务器使用缺省设置可以很好
地运行。但是,对于执行超负荷文件系统I/O 的系统,可能需要调整此参
数。
对于工作负荷相对稳定以及内存量较大的系统,可以降低此值。可接受的
最小值为512 KB,以页表示,其页大小为getpagesize 的返回值。
承诺级别不稳定
与分页相关的参数
42 Solaris 可调参数参考手册• 2006 年10 月
desfree
说明指定系统上始终可用的首选内存量。
数据类型无符号整数
缺省值lotsfree / 2
范围最小值为256 KB 与物理内存的1/128 之间的较大值,以页表示,其页大小为
getpagesize 的返回值。
最大值为物理内存页数。最大值不应大于物理内存的15%。系统不会强制
执行此范围,“验证”部分介绍的内容除外。
单位页
是否为动态是,除非执行添加或删除内存的动态重新配置操作。此时,将值重置为
/etc/system 文件中提供的值或者根据新物理内存值计算得出的值。
验证如果desfree 大于lotsfree,则将desfree 设置为lotsfree / 2。不显示任何
消息。
含义应始终维护以下关系:lotsfree 大于desfree,而后者大于minfree。
负面影响增大此参数的值会产生多种负面影响。当新值接近或超过系统上的可用内
存量时,将出现以下情况:
 无法处理异步I/O 请求,除非可用内存超过desfree。增大desfree 的值
可能会导致拒绝原本可以成功执行的请求。
 将NFS 异步写入作为同步写入执行。
 较早地唤醒交换程序,并且交换程序的行为偏向于更加主动的操作。
 系统可能无法预先测出许多可执行页进入系统时出现的故障。这种负面
影响会导致应用程序的运行速度可能慢于原本可以达到的速度。
何时更改对于工作负荷相对稳定以及内存量较大的系统,可以降低此值。可接受的
最小值为256 KB,以页表示,其页大小为getpagesize 的返回值。
承诺级别不稳定
minfree
说明指定可接受的最低内存级别。当内存低于此数值时,系统会偏向于执行以
下两种分配:成功完成页出操作所需的分配或将进程完全交换出内存所需
的分配。这两种分配都会拒绝或阻止其他分配请求。
数据类型无符号整数
缺省值desfree / 2
与分页相关的参数
第2 章• Solaris 内核可调参数43
范围最小值为128 KB 与物理内存的1/256 之间的较大值,以页表示,其页大小为
getpagesize 的返回值。
最大值为物理内存页数。最大值不应大于物理内存的7.5%。系统不会强制
执行此范围,“验证”部分介绍的内容除外。
单位页
是否为动态是,除非执行添加或删除内存的动态重新配置操作。此时,将值重置为
/etc/system 文件中提供的值或者根据新物理内存值计算得出的值。
验证如果minfree 大于desfree,则将minfree 设置为desfree / 2。不显示任何消
息。
含义应始终维护以下关系:lotsfree 大于desfree,而后者大于minfree。
何时更改缺省值通常已经足够。对于工作负荷相对稳定以及内存量较大的系统,可
以降低此值。可接受的最小值为128 KB,以页表示,其页大小为
getpagesize 的返回值。
承诺级别不稳定
throttlefree
说明指定内存级别,当达到此内存级别时,会将阻止内存分配请求置于休眠状
态,即使内存足以满足此类请求时也是如此。
数据类型无符号整数
缺省值minfree
范围最小值为128 KB 与物理内存的1/256 之间的较大值,以页表示,其页大小为
getpagesize 的返回值。
最大值为物理内存页数。最大值不应大于物理内存的4%。系统不会强制执
行此范围,“验证”部分介绍的内容除外。
单位页
是否为动态是,除非执行添加或删除内存的动态重新配置操作。此时,将值重置为
/etc/system 文件中提供的值或者根据新物理内存值计算得出的值。
验证如果throttlefree 大于desfree,则将throttlefree 设置为minfree。不显
示任何消息。
含义应始终维护以下关系:lotsfree 大于desfree,而后者大于minfree。
何时更改缺省值通常已经足够。对于工作负荷相对稳定以及内存量较大的系统,可
以降低此值。可接受的最小值为128 KB,以页表示,其页大小为
getpagesize 的返回值。有关更多信息,请参见getpagesize(3C)。
承诺级别不稳定
与分页相关的参数
44 Solaris 可调参数参考手册• 2006 年10 月
pageout_reserve
说明指定为专门使用页出线程或调度程序线程保留的页数。当可用内存小于此
值时,便会针对除页出或调度程序之外的所有进程拒绝非阻止分配。页出
需要具有较小的内存池供自身使用,以便可以分配执行I/O 所需的数据结
构,从而将页写入其后备存储。在Solaris 2.6 发行版中引入了此变量,用于
确保系统在内存严重不足的情况下能够执行页出操作。
数据类型无符号整数
缺省值throttlefree / 2
范围最小值为64 KB 与物理内存的1/512 之间的较大值,以页表示,其页大小为
getpagesize(3C) 的返回值。
最大值为物理内存页数。最大值不应大于物理内存的2%。系统不会强制执
行此范围,“验证”部分介绍的内容除外。
单位页
是否为动态是,除非执行添加或删除内存的动态重新配置操作。此时,将值重置为
/etc/system 文件中提供的值或者根据新物理内存值计算得出的值。
验证如果pageout_reserve 大于throttlefree / 2,则将pageout_reserve 设置为
throttlefree / 2。不显示任何消息。
含义应始终维护以下关系:lotsfree 大于desfree,而后者大于minfree。
何时更改缺省值通常已经足够。对于工作负荷相对稳定以及内存量较大的系统,可
以降低此值。可接受的最小值为64 KB,以页表示,其页大小为
getpagesize 的返回值。
承诺级别不稳定
pages_pp_maximum
说明定义必须处于未锁定状态的页数。如果某个锁定页请求将强制可用内存
低于此值,则会拒绝此请求。
数据类型无符号长整数
缺省值以下两者中的较大值:tune_t_minarmem + 100、引导时可用内存的4%+4
MB
范围系统强制的最小值为tune_t_minarmem + 100,但不强制最大值。
单位页
是否为动态是,除非执行添加或删除内存的动态重新配置操作。此时,将值重置为
/etc/system 文件中提供的值或者根据新物理内存值计算得出的值。
与分页相关的参数
第2 章• Solaris 内核可调参数45
验证如果/etc/system 文件中指定的值或计算得出的缺省值小于
tune_t_minarmem + 100,则将其重置为tune_t_minarmem + 100。
如果/etc/system 文件中的值增大,则不会显示任何消息。仅在引导时以
及执行涉及添加或删除内存的动态重新配置操作期间进行验证。
何时更改当内存锁定请求失败或者附加到带有SHARE_MMU 标志的共享内存段失败,
但仍然看似具有足够的可用内存时。
如果值过大,则可能会导致内存锁定请求(mlock、mlockall 和
memcntl)不必要地失败。有关更多信息,请参
见mlock(3C)、mlockall(3C) 和memcntl(2)。
承诺级别不稳定
更改历史记录有关信息,请参见第156 页中的“pages_pp_maximum(Solaris 9 发行版之
前的Solaris 发行版)”。
tune_t_minarmem
说明定义为避免死锁而需要保留的最小可用驻留(而非可交换)内存。用于保
留一部分内存以供OS 的核心使用。当OS 确定最大可用内存量时,采用此
方法限制的内存将不可见。
数据类型带符号整数
缺省值25
范围1 到物理内存
单位页
是否为动态否
验证无。较大的值会导致浪费物理内存。
何时更改缺省值通常已经足够。如果系统锁定并且调试信息指示没有可用的内存,
可以考虑增大缺省值。
承诺级别不稳定
fastscan
说明定义内存压力达到最大时系统每秒查看的最大页数。
数据类型带符号整数
缺省值64MB与物理内存的1/2 之间的较小值。
范围1 到物理内存的一半
与分页相关的参数
46 Solaris 可调参数参考手册• 2006 年10 月
单位页
是否为动态是,除非执行添加或删除内存的动态重新配置操作。此时,将值重置为由
/etc/system 提供的值或者根据新物理内存值计算得出的值。
验证最大值为64MB与物理内存的1/2 之间的较小值。
何时更改内存不足期间(尤其是在系统处于需要大量内存的阶段或执行超负荷文件
I/O 时)首选更加主动的内存扫描时。
承诺级别不稳定
slowscan
说明定义尝试回收内存时系统每秒查看的最小页数。
数据类型带符号整数
缺省值以页为单位的物理内存的1/20 与100 之间的较小值。
范围1 到fastscan / 2
单位页
是否为动态是,除非执行添加或删除内存的动态重新配置操作。此时,将值重置为
/etc/system 文件中提供的值或者根据新物理内存值计算得出的值。
验证如果slowscan 大于fastscan / 2,则将slowscan 重置为fastscan / 2。不显示
任何消息。
何时更改内存不足期间(尤其是在系统处于需要大量内存的阶段)首选更加主动的
内存扫描时。
承诺级别不稳定
min_percent_cpu
说明定义pageout 可占用的最小CPU 百分比。此参数用于确定页面扫描程序可
占用的最长时间。
数据类型带符号整数
缺省值4
范围1 到80
单位百分比
是否为动态是
验证无
与分页相关的参数
第2 章• Solaris 内核可调参数47
何时更改在具有多个CPU 以及较大内存的系统上(这些系统处于需要大量内存的阶
段)增大此值,可以使页面调度程序花更多时间来尝试查找内存。
承诺级别不稳定
handspreadpages
说明内存较低时,Solaris OS 使用双指针时钟算法查找候选回收页。时钟的第一
个指针会扫描内存,将页标记为未使用。第二个指针距离第一个指针一段
距离之后再扫描内存,检查页是否仍标记为未使用。如果是,则回收页。
第一个和第二个指针之间的距离为handspreadpages。
数据类型无符号长整数
缺省值fastscan
范围1 到系统上的最大物理内存页数
单位页
是否为动态是。此参数要求将内核reset_hands 参数也设置为非零值。一旦识别出
handspreadpages 的新值,便会将reset_hands 设置为零。
验证将值设置为物理内存量与handspreadpages 值之间的较小值。
何时更改需要延长页在回收之前可能驻留的时间时。增大此值会增加两个指针之间
的距离,从而会延长回收页之前的时间。
承诺级别不稳定
pages_before_pager
说明定义在I/O 完成之后立即释放页(而不是存储页以备将来可能重新使用)的
系统阈值部分。阈值为lotsfree + pages_before_pager。NFS 环境也使用此
阈值,以便在内存压力增加时减小其异步活动。
数据类型带符号整数
缺省值200
范围1 到物理内存量
单位页
是否为动态否
验证无
与分页相关的参数
48 Solaris 可调参数参考手册• 2006 年10 月
何时更改针对页(这些页已实际读取或写入一次,并且未再次引用)执行完大多数
I/O 时,可能要更改此参数。将此变量设置为较大的内存量,会导致继续将
页添加到可用列表。
当系统的内存压力急剧增加时,也可能要更改此参数。较大的值有助于显
著缓解压力。
承诺级别不稳定
maxpgio
说明定义分页系统可对其进行排队的最大页I/O 请求数。将此数值除以4 即可得
到分页系统使用的实际最大数值。此参数用于限制请求数和控制进程交
换。
数据类型带符号整数
缺省值40
范围1 到1024
单位I/0
是否为动态否
验证无
含义页面调度程序发出的最大I/O 请求数受请求缓冲区列表大小的限制,此列表
大小当前为256。
何时更改系统的内存压力急剧增加时。如果配置了多个交换设备或者交换设备为条
带化设备,则较大的值有助于更快地从压力中恢复过来。
承诺级别不稳定
与交换相关的参数
Solaris OS 中的交换由swapfs 伪文件系统实现。交换设备和物理内存上的空间组合被视为可
用空间池,用于支持系统维护异步内存的后备存储。系统首先尝试分配磁盘设备中的空
间,然后将物理内存用作后备存储。强制swapfs 将系统内存用于后备存储时,会强制执行
相应的限制以确保系统不会因为swapfs 占用过多空间而出现死锁。
swapfs_reserve
说明定义保留以供系统(UID = 0) 进程使用的系统内存量。
数据类型无符号长整数
与交换相关的参数
第2 章• Solaris 内核可调参数49
缺省值4MB与物理内存的1/16 之间的较小值
范围最小值为4MB与物理内存的1/16 之间的较小值,以页表示,其页大小为
getpagesize 的返回值。
最大值为物理内存页数。最大值不应大于物理内存的10%。系统不会强制
执行此范围,“验证”部分介绍的内容除外。
单位页
是否为动态否
验证无
何时更改通常没有必要进行更改。仅当软件提供商建议时,或者当系统进程由于无
法获取交换空间而终止时进行更改。较好的解决方案是向系统中添加物理
内存或其他交换设备。
承诺级别不稳定
swapfs_minfree
说明定义要为系统其余部分保留的可用物理内存量。当任何进程尝试保留内存
将其用作交换空间,从而导致系统发现可用内存小于此容量值时,该尝试
将被拒绝。采用此方法保留的页只能由内核或用户级别进程用于进行锁定
分配。
数据类型无符号长整数
缺省值2MB与物理内存的1/8 之间的较大值
范围1 到物理内存量
单位页
是否为动态否
验证无
何时更改进程由于无法获取交换空间而失败,但系统仍具有可用内存时。
承诺级别不稳定
内核内存分配器
Solaris 内核内存分配器可在内核内部分配内存块以供客户机使用。此分配器可创建许多大
小不同的高速缓存以供其客户机使用。客户机也可以请求分配器创建专供该客户机使用的
高速缓存(例如,用于分配特定大小的结构)。可以使用kstat -c kmem_cache 命令来查看
有关由此分配器管理的每个高速缓存的统计信息。
内核内存分配器
50 Solaris 可调参数参考手册• 2006 年10 月
有时,系统可能会因内存损坏而发生混乱。内核内存分配器支持调试接口(一组标志,可
对缓冲区执行各种完整性检查)。它还可收集有关分配器的信息。通过完整性检查可以比
较精确地检测实际出现错误的位置。收集的信息可以为您确定系统混乱的原因提供更多的
数据支持。
在系统运行期间使用标志会引起额外的系统开销并占用更多的内存。仅当怀疑出现内存损
坏问题时,才应使用这些标志。
kmem_flags
说明Solaris 内核内存分配器具有各种调试和测试选项,这些选项可在Solaris OS
内部开发周期内广泛使用。从Solaris 2.5 发行版开始,便可使用这些选项中
的部分选项。这些选项受kmem_flags 变量控制。可使用内核调试程序设置
该变量,然后重新引导系统使其生效。Solaris 8 发行版之前的版本,由于在
内核内存分配器实例化的计时以及/etc/system 文件解析方面存在问题,因
此无法在/etc/system 文件中设置这些标志。
以下介绍了五种受支持的标志设置。
标志设置说明
AUDIT 0x1 分配器维护包含其最近活动历史记录的日志。记
录的项数取决于是否还设置了CONTENTS。此日志
大小固定。当用完空间时,便会回收较早的记
录。
TEST 0x2 分配器向释放的内存中写入模式,并在下一次分
配缓冲区时检查此模式是否未更改。如果缓冲区
的某部分发生更改,则内存可能由先前已分配和
释放此缓冲区的客户机使用。如果确定出现覆
写,则系统会发生混乱。
REDZONE 0x4 分配器在请求的缓冲区的结尾提供额外内存,并
将特定模式插入此内存。释放缓冲区时,将检查
此模式以查看是否在缓冲区结尾后面写入数据。
如果确定出现覆写,则内核会发生混乱。
CONTENTS 0x8 释放缓冲区时,分配器最多记录256 个字节的缓
冲区内容。此标志要求还应设置AUDIT。
从Solaris 8 发行版开始或者在早期发行版中,通
过在启动内核之前引导kadb 并设置这些标志,
/etc/system 文件可以对这些标志的数值进行逻辑
相加和设置。
内核内存分配器
第2 章• Solaris 内核可调参数51
标志设置说明
LITE0x100 分配和释放缓冲区后,执行最小完整性检查。启
用时,分配器将检查是否尚未写入redzone,是否
再次释放已释放的缓冲区,以及要释放的缓冲区
的大小是否为已分配的大小。从Solaris 73/99 发行
版开始,便提供了此标志。请不要将此标志与任
何其他标志一起使用。
数据类型带符号整数
缺省值0(禁用)
范围0(禁用)或1 - 15 或256 (0x100)
是否为动态是。运行时进行的更改仅影响新的内核内存高速缓存。初始化系统之后,
很少创建新的高速缓存。
验证无
何时更改怀疑发生内存损坏时
承诺级别不稳定
常规驱动程序参数
moddebug
说明用于显示有关装入模块过程中各个步骤的消息。
数据类型带符号整数
缺省值0(关闭消息)
范围以下是最有用的值:
 0x80000000-列显[un] loading... 消息。对于每个已装入的模块,将在
控制台上和/var/adm/messages 文件中显示以下消息:
Nov 5 16:12:28 sys genunix: [ID 943528 kern.notice]
load ’sched/TS_DPTBL’ id 9 loaded @ 0x10126438/
0x10438dd8 size 132/2064
Nov 5 16:12:28 sys genunix: [ID 131579 kern.notice]
常规驱动程序参数
52 Solaris 可调参数参考手册• 2006 年10 月
installing TS_DPTBL, module id 9.
 0x40000000-列显详细的错误消息。对于每个已装入的模块,将在控制
台上和/var/adm/messages 文件中显示以下消息:
Nov 5 16:16:50 sys krtld: [ID 284770 kern.notice]
kobj_open: can’t open /platform/SUNW,Ultra-80/kernel/
sched/TS_DPTBL
Nov 5 16:16:50 sys krtld: [ID 284770 kern.notice]
kobj_open: can’t open /platform/sun4u/kernel/sched/
TS_DPTBL
Nov 5 16:16:50 sys krtld: [ID 797908 kern.notice]
kobj_open: ’/kernel/sch...
Nov 5 16:16:50 sys krtld: [ID 605504 kern.notice]
descr = 0x2a
Nov 5 16:16:50 sys krtld: [ID 642728 kern.notice]
kobj_read_file: size=34,
Nov 5 16:16:50 sys krtld: [ID 217760 kern.notice]
offset=0
Nov 5 16:16:50 sys krtld: [ID 136382 kern.notice]
kobj_read: req 8192 bytes,
Nov 5 16:16:50 sys krtld: [ID 295989 kern.notice]
got 4224
Nov 5 16:16:50 sys krtld: [ID 426732 kern.notice]
read 1080 bytes
Nov 5 16:16:50 sys krtld: [ID 720464 kern.notice]
常规驱动程序参数
第2 章• Solaris 内核可调参数53
copying 34 bytes
Nov 5 16:16:50 sys krtld: [ID 234587 kern.notice]
count = 34
[33 lines elided]
Nov 5 16:16:50 sys genunix: [ID 943528 kern.notice]
load ’sched/TS_DPTBL’ id 9 loaded @ 0x10126438/
0x10438dd8 size 132/2064
Nov 5 16:16:50 sys genunix: [ID 131579 kern.notice]
installing TS_DPTBL, module id 9.
Nov 5 16:16:50 sys genunix: [ID 324367 kern.notice]
init ’sched/TS_DPTBL’ id 9 loaded @ 0x10126438/
0x10438dd8 size 132/2064
 0x20000000-列显更多的详细消息。此值不会列显0x40000000 标志在系
统引导期间所列显信息之外的任何其他信息。但是,此值会列显有关卸
载模块时释放模块的其他信息。
可以将这些值相加来设置最终值。
是否为动态是
验证无
何时更改未按预期方式装入模块或在装入模块期间系统似乎挂起时。请注意,设置
0x40000000 之后,系统引导速度会随写入控制台的消息数的增加而大大降
低。
承诺级别不稳定
常规驱动程序参数
54 Solaris 可调参数参考手册• 2006 年10 月
常规I/O 参数
maxphys
说明定义最大物理I/O 请求大小。如果驱动程序遇到大于此大小的请求,则会将
此请求分为几个大小为maxphys 的块。文件系统可以并且确实会强加其自己
的限制。
数据类型带符号整数
缺省值131,072 (Sun-4u) 或57,344 (x86)。如果sd 驱动程序支持广泛传输,则使用值
1,048,576。ssd 驱动程序缺省情况下使用1,048,576。
范围特定于计算机的页大小到MAXINT
单位字节
是否为动态是,但是挂载文件系统时,很多文件系统都将此值装入每挂载点数据结
构。许多驱动程序都在将设备连接到特定于驱动程序的数据结构时装入此
值。
验证无
何时更改在原始设备上执行大量I/O 操作时(包括输入和输出)。请注意,执行
OLTP 操作的DBMS 会导致大量的较小I/O 操作。在这种情况下,更改
maxphys 不会提高性能。
在随时要读取或写入大量数据(大于64 KB)的UFS 文件系统上执行进出
I/O 操作时,也要考虑更改此参数。应优化此文件系统以改善邻接性。例
如,增加柱面组的大小并减小每柱面组的inode 数。UFS 对其传输的最大
I/O 大小强加1MB的内部限制。
承诺级别不稳定
rlim_fd_max
说明指定对单个进程可以打开的文件描述符设置的“硬”限制。覆盖此限制需要
超级用户权限。
数据类型带符号整数
缺省值65,536
范围1 到MAXINT
单位文件描述符
是否为动态否
常规I/O 参数
第2 章• Solaris 内核可调参数55
验证无
何时更改某个进程的最大已打开文件数不足时。系统功能中的其他限制表示更多
的文件描述符并不会起到可能具有的作用。例如:
 使用标准I/O 的32 位程序最多可以使用256 个文件描述符。使用标准
I/O 的64 位程序最多可以使用20 亿个描述符。具体而言,标准I/O 是
指libc(3LIB) 中的stdio(3C) 函数。
 缺省情况下,会将select 限制为每fd_set 使用1024 个描述符。有关
更多信息,请参见select(3C)。从Solaris 7 发行版开始,可以使用较
大的fd_set 大小(小于或等于65,536)来重新编译32 位应用程序代
码。64 位应用程序使用的fd_set 大小为65,536(无法更改)。
在系统范围内更改此参数的一种备用方法是使用plimit(1) 命令。如果父
进程使用plimit 更改了其限制,则所有子进程都会继承增大的限制。此
备用方法对于inetd 之类的守护进程非常有用。
承诺级别不稳定
更改历史记录有关信息,请参见第155 页中的“rlim_fd_max(Solaris 8 发行版)”。
rlim_fd_cur
说明定义对单个进程可以打开的文件描述符设置的“软”限制。进程可能会在运行
任何shell 期间通过使用setrlimit() 调用或发出limit 命令,将其文件描述
符限制调整到最多为rlim_fd_max 定义的“硬”限制的任何值。无需超级用户
权限即可将此限制调整到小于或等于硬限制的任何值。
数据类型带符号整数
缺省值256
范围1 到MAXINT
单位文件描述符
是否为动态否
验证与rlim_fd_max 进行比较。如果rlim_fd_cur 大于rlim_fd_max,则将
rlim_fd_cur 重置为rlim_fd_max。
何时更改某个进程的缺省已打开文件数不足时。增大此值只表示程序可能没有必要
使用setrlimit 来增加其可用的最大文件描述符数。
承诺级别不稳定
常规I/O 参数
56 Solaris 可调参数参考手册• 2006 年10 月
常规文件系统参数
ncsize
说明定义目录名称查找高速缓存(directory name look-up cache, DNLC) 中的项
数。UFS 和NFS 使用此参数来高速缓存已解析的路径名元素。
从Solaris 8 6/00 发行版开始,DNLC 还可高速缓存非查询信息,这意味着它
可高速缓存无法在高速缓存中找到的名称。
数据类型带符号整数
缺省值4 x (v.v_proc + maxusers) + 320
范围0 到MAXINT
单位DNLC 项
是否为动态否
验证无。较大的值会导致取消挂载文件系统所花费的时间增加,因为取消挂载
过程中必须刷新高速缓存中此文件系统的项。
何时更改在Solaris 8 6/00 发行版之前,很难确定高速缓存是否过小。可以通过记下
kstat -n ncstats 返回的项数来进行此推断。已知系统工作负荷和文件访问
模式的情况下,如果此项数似乎过高,则可能是由于DNLC 过小造成的。
从Solaris 8 6/00 发行版开始,可以使用kstat -n dnlcstats 命令来确定因为
DNLC 过小而从其中删除项的时间。pick_heuristic 和pick_last 参数的总
和表示因为高速缓存过小而回收的其他有效项数。
如果ncsize 的值过大,则会直接影响系统,因为系统会基于ncsize 的值为
DNLC 分配一组数据结构。运行32 位内核的系统将针对ncsize 分配36 字节
的结构,而运行64 位内核的系统将针对ncsize 分配64 字节的结构。此值会
进一步影响UFS 和NFS,除非显式设置了ufs_ninode 和nfs:nrnode。
承诺级别不稳定
rstchown
说明指示chown 系统调用的POSIX 语义是否有效。POSIX 语义如下:
 进程无法更改文件的属主,除非此进程使用UID 0 运行。
 进程无法将文件的组拥有权更改为当前不包含此文件的组,除非此进程
以UID 0 运行。
有关更多信息,请参见chown(2)。
常规文件系统参数
第2 章• Solaris 内核可调参数57
数据类型带符号整数
缺省值1,指示使用POSIX 语义
范围0 = 未强制使用POSIX 语义,或1 = 使用POSIX 语义
单位切换(开/关)
是否为动态是
验证无
何时更改不需要POSIX 语义时。请注意,关闭POSIX 语义可能会出现各种安全漏
洞。此外,还会使用户可以将文件的拥有权更改为其他用户,并且在该用
户或系统管理员不介入的情况下无法检索文件。
承诺级别过时
dnlc_dir_enable
说明启用大型目录高速缓存
注– 此参数对NFS 文件系统没有影响。
数据类型无符号整数
缺省值1(启用)
范围0(禁用)或1(启用)
是否为动态是,但是请勿动态更改此可调参数。如果此参数最初为禁用状态,则可以
将其启用。或者,如果此参数最初为启用状态,则可以将其禁用。但是,
启用,禁用,然后再启用此参数可能会导致目录高速缓存过时。
验证否
何时更改目录高速缓存未出现已知问题时。但是,如果出现问题,应将
dnlc_dir_enable 设置为0 以禁用高速缓存。
承诺级别不稳定
dnlc_dir_min_size
说明指定一个目录可高速缓存的最少项数。
注– 此参数对NFS 文件系统没有影响。
数据类型无符号整数
常规文件系统参数
58 Solaris 可调参数参考手册• 2006 年10 月
缺省值40
范围0 到MAXUINT(无最大值)
单位项
是否为动态是,可以随时更改此参数。
验证无
何时更改如果高速缓存小型目录时出现性能问题,则应增大dnlc_dir_min_size。请
注意,个别文件系统对高速缓存目录可能有其自己的范围限制。例如,UFS
将目录限制为最少包含ufs_min_dir_cache 字节(大约1024 个项,假设每个
项包含16 字节)。
承诺级别不稳定
dnlc_dir_max_size
说明指定一个目录可高速缓存的最多项数。
注– 此参数对NFS 文件系统没有影响。
数据类型无符号整数
缺省值MAXUINT(无最大值)
范围0 到MAXUINT
是否为动态是,可以随时更改此参数。
验证无
何时更改如果高速缓存大型目录时出现性能问题,则应增大dnlc_dir_max_size。
承诺级别不稳定
segmap_percent
说明定义用于快速访问文件系统高速缓存的最大内存量。可用内存列表不包含
此内存池。
数据类型无符号整数
缺省值系统启动时可用内存的12%
范围2MB到physmem 的100%
单位物理内存的百分比
是否为动态否
常规文件系统参数
第2 章• Solaris 内核可调参数59
验证无
何时更改如果预期要执行超负荷文件系统活动,并且具有足够的可用内存,则应增
大此参数的值。
承诺级别不稳定
UFS 参数
bufhwm 和bufhwm_pct
说明定义用于高速缓存I/O 缓冲区的最大内存量。这些缓冲区用于写入文件
系统元数据(超级块、inode、间接块和目录)。可以根据需要分配缓
冲区,直到要分配的内存量(以KB 为单位)超过bufhwm 为止。此时,
将从高速缓存存储区中刷新元数据,直到回收的缓冲区足以满足请求为
止。
鉴于历史原因,bufhwm 不需要ufs: 前缀。
数据类型带符号整数
缺省值物理内存的2%
范围80 KB 到物理内存的20% 与2TB之间的较小值。因此,bufhwm_pct 可以
介于1 到20 之间。
单位bufhwm:KB
bufhwm_pct:物理内存的百分比
是否为动态否。仅在系统初始化时确定bufhwm 和bufhwm_pct 以计算散列桶大小。
此后,将根据这些参数计算的限制(以字节为单位)存储到可在分配和
解除分配缓冲区时调整此值的数据结构中。
在正在运行的系统上,不遵守封锁协议而直接尝试调整此值可能会导致
错误操作。
运行时修改bufhwm 或bufhwm_pct 没有任何效果。
验证如果bufhwm 小于其下限80 KB 或大于其上限(物理内存的20%、2TB以
及最大内核堆大小的1/4 之中的最小者),则将其重置为上限。如果尝
试使用无效值,则会在系统控制台上和/var/adm/messages 文件中显示
以下消息:
"binit: bufhwm (value attempted) out of range
(range start..range end). Using N as default."
UFS 参数
60 Solaris 可调参数参考手册• 2006 年10 月
"value attempted" 是指_nolinebreak>/etc/system 文件中指定的值或者使
用内核调试程序指定的值。N 是系统基于可用系统内存计算所得的值。
同样,如果bufhwm_pct 的设置值不在1% 到20% 的允许范围内,则将其
重置为缺省值2%。并且,将在系统控制台上和/var/adm/messages 文件
中显示以下消息:
"binit: bufhwm_pct(value attempted) out of range(0..20).
Using 2 as default."
如果同时将bufhwm 和bufhwm_pct 设置为非零值,则bufhwm 优先。
何时更改由于只在需要时分配缓冲区,因此,缺省设置的开销必须满足缓冲区散
列头控制结构的内存分配需求。在32 位内核上,这些结构在每个潜在
缓冲区占用52 个字节;在64 位内核上,在每个潜在缓冲区占用96 个字
节。
在512MB的64 位内核上,散列链数计算为10316 / 32 == 322,最多可扩
展到2 的下一个整数幂,即512。因此,散列头将占用512 x 96 字节,
或48 KB。散列头分配假设缓冲区大小为32 KB。
通过使用内核调试程序查看内核中的bfreelist 结构,可以找出缓冲池
中尚未分配的内存量。结构中的关键字段为b_bufsize,此字段是指可
能的剩余内存(以字节为单位)。可以使用mdb 命令通过buf 宏查看此
字段:
# mdb -kLoading modules: [ unix krtld genunix ip nfs ipc ]
> bfreelist::print "struct buf" b_bufsize
b_bufsize = 0x225800
在此内存为6GB的系统上,bufhwm 的缺省值为122277。不能确定使用
的头结构数,因为请求的实际缓冲区大小通常大于1KB。但是,可以从
此系统的控制结构分配中有利地回收一些空间。
512MB系统上的相同结构显示了10144 KB 中只有4KB尚未分配。使用
kstat -n biostats 检查biostats kstat 时,还会发现系统具有合理的
buffer_cache_hits 与buffer_cache_lookups 的比率。同样,系统的缺
省设置也比较合理。
承诺级别不稳定
更改历史记录有关信息,请参见第157 页中的“bufhwm(Solaris 9 发行版)”。
UFS 参数
第2 章• Solaris 内核可调参数61
ndquot
说明定义应为UFS 文件系统分配的配额结构数。仅当在一个或多个UFS 文件系
统上启用配额时才关系到此参数。鉴于历史原因,不需要ufs: 前缀。
数据类型带符号整数
缺省值((maxusers x 40) / 4) + max_nprocs
范围0 到MAXINT
单位配额结构
是否为动态否
验证无。值过大将使系统挂起。
何时更改缺省配额结构数不足时。在这种情况下,会在控制台上显示或在消息日志
中写入以下消息:
dquot table full
承诺级别不稳定
ufs_ninode
说明指定要在内存中保存的inode 数。Inode 将针对UFS 进行全局高速缓存,并
非以每个文件系统为基础进行高速缓存。
在这种情况下,关键参数为ufs_ninode。此参数用于计算两个可影响inode
高速缓存处理的关键限制。将计算高水位标记ufs_ninode / 2 以及低水位
标记ufs_ninode / 4。
当系统使用一个inode 运行时,可能会出现以下两种情况之一:
 inode 引用的文件不再存在于系统上,因此将删除inode。删除inode 之
后,空间又可进行inode 高速缓存,以供其他inode(将从磁盘读取或针
对新文件创建)使用。
 文件仍然存在,但是不再由运行的进程引用。随后将inode 放到空闲队
列中。任何引用的页仍在内存中。
当inode 处于空闲状态时,内核便会将空闲进程向后延迟一段时间。如果文
件系统为日志文件系统,则内核还会延迟删除inode。将有两个内核线程处
理这种延迟处理,每个线程负责一个队列。
执行推迟处理时,系统会将inode 放入删除队列或空闲队列。这两个队列由
单独的线程进行处理。将inode 放到队列时,会根据低水位标记检查队列占
用率。如果队列占用率超过低水位标记,则会唤醒与队列关联的线程。唤
UFS 参数
62 Solaris 可调参数参考手册• 2006 年10 月
醒队列之后,线程便会在队列中运行,并将与inode 关联的所有页强制迁出
到磁盘从而释放inode。当线程删除了唤醒队列时队列中50% 的inode 时,
便会停止。
如果空闲线程无法跟上负载变化,则使用第二种机制。当系统需要查找
vnode 时,便会执行ufs_vget 例程。vget 执行的第一项操作是检查空闲队
列的长度。如果长度大于高水位标记,则会从空闲队列中去除两个inode 并
将它们“置于空闲状态”(刷新页并释放inode)。vget 将在获取供自身使用
的inode 之前执行此操作。
系统尝试通过以下操作进行优化:将不包含主存页的inode 放在空闲列表的
开头,将包含页的inode 放在空闲列表的结尾。但是,系统不对列表中的其
他项进行排序。将始终从空闲队列的前部删除inode。
仅当执行同步、取消挂载或重新挂载时,才从队列中全部删除inode。
鉴于历史原因,此参数不需要ufs: 前缀。
数据类型带符号整数
缺省值ncsize
范围0 到MAXINT
单位Inode
是否为动态是
验证如果ufs_ninode 小于或等于零,则将值设置为ncsize。
何时更改当缺省inode 数不足时。如果kstat -n inode_cache 报告的maxsize reached
字段的值大于kstat 中的maxsize 字段的值,则ufs_ninode 的值可能过小。
如果inode 过于空闲,也可能会出现问题。
可以通过使用kstat -n inode_cache 查看inode_cache kstat 来标识过于空
闲的inode。Thread idles 是由后台线程置于空闲状态的inode,而vget
idles 是指请求进程在使用inode 之前就将其置于空闲状态的inode。
承诺级别不稳定
ufs_WRITES
说明如果ufs_WRITES 为非零值,则会检查未在文件中写入的字节数。请参见
ufs_HW 以确定在只有ufs_LW 个字节未完成之前,应该执行写入还是延迟写
入。将基于每个文件跟踪未完成的总字节数,这样如果某个文件超过限
制,不会影响向其他文件中写入。
数据类型带符号整数
缺省值1(启用)
UFS 参数
第2 章• Solaris 内核可调参数63
范围0(禁用)或1(启用)
单位切换(开/关)
是否为动态是
验证无
何时更改希望UFS 写入限制完全关闭时。如果I/O 容量不足,则禁用此参数会导致磁
盘具有较长服务队列。
承诺级别不稳定
ufs_LW 和ufs_HW
说明ufs_HW 指定单个文件中的未完成字节数限制值。如果未完成的字节数大于
此值并且设置了ufs_WRITES,则会延迟写入。通过根据条件变量将执行写
入的线程置于休眠状态来延迟写入。
ufs_LW 是单个文件中未完成字节数的限制,如果低于此限制,则会切换其
他休眠进程所依赖的条件变量。当写入完成且字节数小于ufs_LW 时,便会
切换条件变量,从而导致所有线程都在等待此变量被唤醒并尝试执行其写
入。
数据类型带符号整数
缺省值对于ufs_LW,为8 x 1024 x 1024;对于ufs_HW,为16 x 1024 x 1024
范围0 到MAXINT
单位字节
是否为动态是
验证无
含义仅当ufs_WRITES 不等于零时,ufs_LW 和ufs_HW 才有意义。应该同时更改
ufs_HW 和ufs_LW,以免在以下情况下进行不必要的调整:进程唤醒并且发
现它们无法执行写入(当ufs_LW 和ufs_HW 太相近时)或者它们等待的时间
可能大于所需的时间(当ufs_LW 和ufs_HW 相差太大时)。
何时更改当文件系统由条带化卷组成时,请考虑更改这些值。可用的聚集带宽会很
容易超过ufs_HW 的当前值。但是,此参数并非每文件系统设置。
当ufs_throttles 为关键数值时,也可能要考虑更改此参数。当前,
ufs_throttles 只能使用内核调试程序进行访问。
承诺级别不稳定
UFS 参数
64 Solaris 可调参数参考手册• 2006 年10 月
freebehind
说明启用freebehind 算法。启用此算法之后,如果在内存使用率过高时检测到
顺序I/O,则系统会跳过新读取的块中的文件系统高速缓存。
数据类型布尔值
缺省值1(启用)
范围0(禁用)或1(启用)
是否为动态是
验证无
何时更改可以非常容易地执行freebehind 算法。如果不期望执行重要的顺序文件系
统活动,则禁用freebehind 可确保将在文件系统页高速缓存中保留所有文
件(不论规模多大)。有关更精细的调优,请参见smallfile。
承诺级别不稳定
smallfile
说明确定文件的大小阈值,如果文件大于此值,则在freebehind 算法下,不进
行高速缓存保留。
大内存系统包含的内存足以高速缓存数以千计的10MB文件,而不会引起
严重的内存需求问题。但是,这种情况在很大程度上与应用程序相关。
smallfile 和freebehind 参数的目标是重复使用高速缓存的信息,而不会因
为高速缓存过多而导致内存不足。
数据类型带符号整数
缺省值32,768
范围0 到2,147,483,647
是否为动态是
验证无
何时更改如果应用程序按顺序读取适度大小的文件并很有可能从缓冲中受益,同时
系统不存在可用内存不足的压力,则增大smallfile。适度大小的文件是指
大小为32 KB 到2GB的文件。
承诺级别不稳定
UFS 参数
第2 章• Solaris 内核可调参数65
TMPFS 参数
tmpfs:tmpfs_maxkmem
说明定义TMPFS 可用于其数据结构(tmpnode 和目录项)的最大内核内存量。
数据类型无符号长整数
缺省值一页与物理内存的4% 之间的较大值。
范围一页中的字节数(对于sun4u 系统为8192,对于所有其他系统为4096)到
首次使用TMPFS 时可用内核内存的25%。
单位字节
是否为动态是
验证无
何时更改如果控制台上显示了或消息文件中写入了以下消息,则应增大此值:
tmp_memalloc: tmpfs over memory limit
TMPFS 用于其数据结构的当前内存量存储在tmp_kmemspace 字段中。可以使
用内核调试程序检查此字段。
承诺级别不稳定
tmpfs:tmpfs_minfree
说明定义TMPFS 为系统的其余部分保留的最小交换空间量。
数据类型带符号长整数
缺省值256
范围0 到最大交换空间大小
单位页
是否为动态是
验证无
何时更改要在大量使用TMPFS 的系统上保留合理的交换空间量,可以增大此数
值。当控制台或消息文件显示以下消息时,表示已达到限制:
fs-name: File system full, swap space limit exceeded
承诺级别不稳定
TMPFS 参数
66 Solaris 可调参数参考手册• 2006 年10 月
更改历史记录有关信息,请参见第156 页中的“tmpfs:tmpfs_minfree(Solaris 8 发行
版)”。
伪终端
在Solaris 软件中,伪终端pty 具有以下两种用途:
 使用telnet、rlogin 或rsh 命令支持远程登录
 提供X 窗口系统用以创建命令解释程序窗口的界面
对于桌面工作站,缺省伪终端数便已足够。因此,将主要针对可用于远程登录的pty 数进
行调优。
Solaris 的早期版本需要执行这些调优步骤,以便显式配置系统使其具有首选的pty 数。从
Solaris 8 发行版开始,采用了新机制,从而在大多数情况下不必进行调优。现在,缺省pty
数基于系统上的内存量。仅当限制或增加可登录到系统的用户数时,才应该更改此缺省
值。
在配置过程中,将使用以下三个相关变量:
 pt_cnt-最大缺省pty 数。
 pt_pctofmem-专用于pty 支持结构的内核内存的百分比。如果值为零,则表示任何远程
用户都无法登录到系统。
 pt_max_pty-硬性最大pty 数。
pt_cnt 的缺省值为零,此值指示系统基于pct_pctofmem 中指定的内存量限制登录,除非设
置了pt_max_pty。如果pt_cnt 为非零值,则会分配pty,直到达到此限制为止。超过此阈
值时,系统便会查看pt_max_pty。如果pt_max_pty 具有非零值,则将其与pt_cnt 进行比
较。如果pt_cnt 小于pt_max_pty,则允许分配pty。如果pt_max_pty 为零,则将pt_cnt 与
基于pt_pctofmem 支持的pty 数进行比较。如果pt_cnt 小于此值,则允许分配pty。请注
意,仅当pt_cnt 和ptms_ptymax 的缺省值都为零时,基于pt_pctofmem 的限制才起作用。
要对pty 设置不同于源自pt_pctofmem 的最大值的硬限制,请在/etc/system 中将pt_cnt 和
ptms_ptymax 设置为首选pty 数。在这种情况下,与ptms_pctofmem 的设置无关。
要针对pty 支持使用不同的系统内存百分比,并使操作系统可管理显式限制,请执行以下
操作:
 请勿在/etc/system 中设置pt_cnt 或ptms_ptymax。
 在/etc/system 中将pt_pctofmem 设置为首选百分比。例如,对于10% 设置,设置
pt_pctofmem=10。
请注意,在内存用于pty 支持之前,实际上并不分配内存。分配内存之后,便会保持已分
配状态。
伪终端
第2 章• Solaris 内核可调参数67
pt_cnt
说明可用/dev/pts 项数是动态的,其上限由系统上可用物理内存量确定。
pt_cnt 是用于确定系统可容纳的最小登录数的三个变量之一。系统可支持
的最大缺省/dev/pts 设备数是在引导时通过计算适合系统内存某百分比的
pty 结构数来确定的(请参见pt_pctofmem)。如果pt_cnt 为零,则系统分
配的最大内存为此最大值。如果pt_cnt 为非零值,则系统分配的最大内存
为pt_cnt 与缺省最大值之间的较大值。
数据类型无符号整数
缺省值0
范围0 到maxpid
单位登录/窗口
是否为动态否
验证无
何时更改需要显式控制可远程登录到系统的用户数时。
承诺级别不稳定
pt_pctofmem
说明指定为支持/dev/pts 项数据结构可占用的最大物理内存百分比。运行64 位
内核的系统将针对每个/dev/pts 项占用176 字节。运行32 位内核的系统将
针对每个/dev/pts 项占用112 字节。
数据类型无符号整数
缺省值5
范围0 到100
单位百分比
是否为动态否
验证无
何时更改需要限制或增加可登录到系统的用户数时。如果值为零,则表示任何远程
用户都无法登录到系统。
承诺级别不稳定
伪终端
68 Solaris 可调参数参考手册• 2006 年10 月
pt_max_pty
说明定义系统可提供的最大pty 数
数据类型无符号整数
缺省值0(使用系统定义的最大值)
范围0 到MAXUINT
单位登录/窗口
是否为动态是
验证无
含义应该大于或等于pt_cnt。当分配的pty 数超过pt_cnt 的值时,才检查此
值。
何时更改需要对支持的登录数设置上限(即使系统基于其当前配置值可以处理更多
登录)时。
承诺级别不稳定
STREAMS 参数
nstrpush
说明指定可以插入(推入)STREAM 的模块数。
数据类型带符号整数
缺省值9
范围9 到16
单位模块
是否为动态是
验证无
何时更改在软件供应商的指导下更改。当STREAM 超过其允许的推入计数时,不显
示任何消息。但是会将值EINVAL 返回到尝试执行该推入操作的程序。
承诺级别不稳定
STREAMS 参数
第2 章• Solaris 内核可调参数69
strmsgsz
说明指定单个系统调用可以传递给STREAM 的消息数据部分的最大字节数。任
何超过该大小的write 都会被分为多条消息。有关更多信息,请参
见write(2)。
数据类型带符号整数
缺省值65,536
范围0 到262,144
单位字节
是否为动态是
验证无
何时更改当putmsg 调用返回ERANGE 时。有关更多信息,请参见putmsg(2)。
承诺级别不稳定
strctlsz
说明指定单个系统调用可以传递给STREAM 的消息控制部分的最大字节数。
数据类型带符号整数
缺省值1024
范围0 到MAXINT
单位字节
是否为动态是
验证无
何时更改在软件供应商的指导下更改。如果putmsg(2) 调用尝试超过此限制,便会返
回ERANGE。
承诺级别不稳定
System V 消息队列
System V 消息队列提供了一个消息传递接口,允许内核中创建的队列进行消息交换。Solaris
环境提供了多个接口,允许消息加入和离开队列。消息可以具有与其相关联的类型。通过
加入队列操作,可以将消息列在队列的末尾,而通过离开列队操作,可以从队列删除第一
条特定类型的消息,如果未指定类型,则删除第一条消息。
System V 消息队列
70 Solaris 可调参数参考手册• 2006 年10 月
有关Solaris 10 发行版中System V 消息队列的信息,请参见第18 页中的“System V IPC 配置
”。
有关调节这些系统资源的详细信息,请参见《System Administration Guide: Solaris
Containers-Resource Management and Solaris Zones》中的第6 章,“Resource Controls
(Overview)”。
有关过时的System V 消息队列的旧有信息,请参见第165 页中的“过时或已删除的参数
”。
System V 信号
在Solaris OS 中,System V 信号提供计数信号。信号是一个计数器,用于针对多个进程提供
对共享数据对象的访问。除了标准的信号固定和释放操作,System V 信号还可以具有按需
(例如,表示可用资源量)增加或减小的值。System V 信号还提供了同时对一组信号执行
操作的功能,并可以使系统撤消上一个由某个已中止进程执行的操作。
有关Solaris 10 发行版中对信号资源所做的更改的信息,请参见第18 页中的“System V IPC
配置”。
有关使用Solaris 10 发行版中新增资源控制的详细信息,请参见《System Administration
Guide: Solaris Containers-Resource Management and Solaris Zones》中的第6 章,“Resource
Controls (Overview)”。
有关过时的System V 信号参数的旧有信息,请参见第165 页中的“过时或已删除的参数
”。
System V 共享内存
使用System V 共享内存,进程可以创建段。协作进程可以连接到内存段(受段访问权限的
限制)并访问段中包含的数据。此功能通过可装入模块来实现。/etc/system 文件中的项必
须包含shmsys: 前缀。从Solaris 7 发行版开始,keyserv 守护进程使用System V 共享内存。
DBMS 供应商使用一种称为锁定共享内存(intimate shared memory, ISM) 的特殊类型的共享内
存来实现最佳性能。当共享内存段成为ISM 段时,便会锁定该段的内存。借助此功能,可
以使用更快的I/O 路径,并提高了内存使用率。然后在所有以ISM 模式连接到段的进程间
共享大量描述该段的内核资源。
有关Solaris 10 发行版中对共享内存资源所做的更改的信息,请参见第18 页中的“System V
IPC 配置”。
有关使用Solaris 10 发行版中新增资源控制的详细信息,请参见《System Administration
Guide: Solaris Containers-Resource Management and Solaris Zones》中的第6 章,“Resource
Controls (Overview)”。
System V 共享内存
第2 章• Solaris 内核可调参数71
有关过时的System V 共享内存参数的旧有信息,请参见第165 页中的“过时或已删除的参
数”。
segspt_minfree
说明标识不能为ISM 共享内存分配的系统内存页。
数据类型无符号长整数
缺省值创建首个ISM 段时可用系统内存的5%
范围0 到物理内存的50%
单位页
是否为动态是
验证无。当ISM 段占用内存时,太小的值可能导致系统挂起或性能严重下降。
何时更改在使用ISM 且具有大量物理内存的数据库服务器上,可以减小此参数的
值。如果未使用ISM 段,则此参数无效。在大型内存计算机上,最大值128
MB(0x4000) 几乎肯定足够。
承诺级别不稳定
调度
rechoose_interval
说明指定在确定进程与其最后在上面运行的CPU 失去所有关联之前的时钟周期
数。此时间间隔过期之后,便会将任意CPU 视为调度线程的候选CPU。此
参数只与分时类的线程相关。实时线程在第一个可用CPU 上进行调度。
数据类型带符号整数
缺省值3
范围0 到MAXINT
是否为动态是
验证无
何时更改当高速缓存很大,或者系统正在运行一个关键进程或运行一组看上去受并
非由数据访问模式导致的过量高速缓存未命中的影响时。
更改此参数之前,请考虑使用从Solaris 2.6 发行版开始提供的处理器集功能
或处理器绑定。有关更多信息,请参见psrset(1M) 或pbind(1M)。
调度
72 Solaris 可调参数参考手册• 2006 年10 月
承诺级别不稳定
计时器
hires_tick
说明设置此参数之后将导致Solaris OS 使用系统时钟频率1000,而不是缺省值
100。
数据类型带符号整数
缺省值0
范围0(禁用)或1(启用)
是否为动态否。导致在引导时设置新的系统计时变量。引导之后不再引用此变量。
验证无
何时更改希望超时的分辨率小于10 毫秒且大于或等于1 毫秒时。
承诺级别不稳定
timer_max
说明指定可用的POSIXTM 计时器数。
数据类型带符号整数
缺省值32
范围0 到MAXINT
是否为动态否。增大此值可能导致系统崩溃。
验证无
何时更改当系统提供的缺省计时器数不足时。执行timer_create 系统调用时,应用
程序将收到EAGAIN 错误。
承诺级别不稳定
计时器
第2 章• Solaris 内核可调参数73
Sun-4u 特定参数
consistent_coloring
说明从Solaris 2.6 发行版开始,便引入了在UltraSPARC® (sun4u) 平台上使用不同
的页放置策略的功能。页放置策略尝试通过分配物理页地址来最大程度地
利用L2 高速缓存。无论选择何种算法作为缺省算法,此算法可能生成的结
果都会比其他用于特定应用程序集的算法要差。此参数可更改系统上为所
有进程选定的放置算法。
根据L2 高速缓存的大小,将内存分为多个容器。在未映射的页上第一次发
生页面错误时,页放置代码便会从容器中分配一个页面。所选页取决于要
使用以下三种可能的算法中的哪一种:
 页面染色(Page coloring)-将使用各种虚拟地址位确定从中选择页的容
器。此算法为Solaris 8 发行版中的缺省算法。需要将
consistent_coloring 设置为零才能使用此算法。对于此算法,不存在任
何按进程历史记录。
 虚拟地址=物理地址-程序中连续的页将从连续的容器中选择页。需要
将consistent_coloring 设置为1 才能使用此算法。对于此算法,不存在
任何按进程历史记录。
 容器跳跃(Bin-hopping)-程序中连续的页通常是每隔一个容器分配一个
页面,但是此算法偶尔会跳过多个容器。需要将consistent_coloring
设置为2 才能使用此算法。每个进程都从随机选择的容器启动,并且保
留最后所分配容器的每进程内存。
是否为动态是
验证无。值大于2 会导致控制台上显示多条WARNING: AS_2_BIN:bad consistent
coloring value 消息。此后系统立即挂起。需要重新启动电源才能恢复系
统。
何时更改当系统的主工作负荷是一组长期运行的高性能计算(high-performance
computing, HPC) 应用程序时。更改此值可以优化性能。具有多个活动进程
的文件服务器,数据库服务器和系统(例如,编译和分时服务器)则不会
因更改而受益。
承诺级别不稳定
tsb_alloc_hiwater_factor
说明按以下方式初始化tsb_alloc_hiwater,以便设置可分配给转换存储缓冲区
(translation storage buffer, TSB) 的物理内存量的上限:
Sun-4u 特定参数
74 Solaris 可调参数参考手册• 2006 年10 月
tsb_alloc_hiwater= 物理内存(以字节为单位)
/tsb_alloc_hiwater_factor
当分配给TSB 的内存与tsb_alloc_hiwater 的值相等时,由于页面未映射,
因此TSB 内存分配算法将尝试回收TSB 内存。
使用此因子增大tsb_alloc_hiwater 值时务必谨慎。要防止系统挂起,生成
的上限值必须远低于swapfs_minfree 和segspt_minfree 的值。
数据类型整数
缺省值32
范围1 到MAXINT
请注意,如果因子为1,则所有物理内存均可分配给TSB,这可能导致系统
挂起。如果因子太大,则没有可分配给TSB 的内存,从而降低了系统性
能。
是否为动态是
验证无
何时更改如果系统具有许多关联到非常大的共享内存段的进程,则更改此参数的
值。在大多数情况下,无需调节此变量。
承诺级别不稳定
default_tsb_size
说明选择分配给所有进程的初始转换存储缓冲区(translation storage buffer, TSB)
的大小。
数据类型整数
缺省值缺省值为0 (8KB)
范围可能的值为:
值说明
0 8KB
1 16 KB
3 32 KB
4 128 KB
5 256 KB
Sun-4u 特定参数
第2 章• Solaris 内核可调参数75
值说明
6 512 KB
71M B
是否为动态是
验证无
何时更改该值通常不需要更改。但是,如果系统上多数进程的工作集都大于平均工
作集,或者禁用了驻留集大小(resident set size, RSS) 大小调整功能,则更改
此值会很有益。
承诺级别不稳定
enable_tsb_rss_sizing
说明启用基于驻留集大小(resident set size, RSS) 的TSB 大小调整试探性算法。
数据类型布尔值
缺省值1(可以调整TSB 的大小)
范围0(可以调整TSB 的大小)或1(TSB 保留为tsb_default_size)
是否为动态是
验证是
何时更改请勿修改此可调参数。
承诺级别不稳定
tsb_rss_factor
说明控制RSS 大小调整试探性算法的RSS 到TSB 的跨度比。此因子除以512 便可
得出TSB 跨度的百分比,在将TSB 视为备选的大小调整对象之前,此跨度
比必须驻留在内存中。
数据类型整数
缺省值384,由于预期某些虚拟地址会映射到TSB 中的同一个槽,因此只能得出值
75%。
范围0 到512
是否为动态是
验证无
Sun-4u 特定参数
76 Solaris 可调参数参考手册• 2006 年10 月
何时更改如果具有较小地址空间的应用程序发现由于TSB 中的虚拟地址冲突而导致
的TSB 未命中,则可能需要考虑将此值减小至0。
例如,在某些情况下,将tsb_rss_factor 更改为50% 而不是75% 可能有助
于消除TSB 中的虚拟地址冲突,但是会使用更多的内核内存,特别是在高
负荷的系统上。
承诺级别不稳定
Solaris Volume Manager 参数
md_mirror:md_resync_bufsz
说明在缓冲区中将用于重新同步RAID 1 卷(镜像)的缓冲区大小设置为以512
字节为单位的块数。设置更大的值可以加快重新同步的速度。
数据类型整数
缺省值缺省值为128,对于小型系统尚可接受。较大的系统可能使用更大的值来加
快镜像重新同步的速度。
范围128 到2048
单位块(以512 字节为单位)
是否为动态否
验证无
何时更改使用Solaris Volume Manager RAID 1 卷(镜像),并且希望加快镜像重新同
步的速度时。假设您所具有的内存足以满足总体系统性能,则可以增大此
值而不会导致其他性能问题。
如果需要加快镜像重新同步的速度,请以增量方式增大此参数的值(使用
增量128 块),直到获得满意的性能。在相当大的系统或新系统上,值
2048 可能为最佳值。在较旧的系统上设置较高的值可能会导致系统挂起。
承诺级别不稳定
md:mirrored_root_flag
说明如果有任何有效状态数据库副本可用,则将覆盖Solaris Volume Manager 要
求的副本定额并强制启动Solaris Volume Manager。
缺省值为禁用,即要求启动Solaris Volume Manager 之前大多数副本可用且
已同步。
Solaris Volume Manager 参数
第2 章• Solaris 内核可调参数77
数据类型布尔值
缺省值0(禁用)
范围0(禁用)或1(启用)
是否为动态否
验证无
何时更改不支持此参数的用法。
如果符合以下所有三个条件,则使用Solaris Volume Manager 的用户可接受
启用此参数的风险:
 已镜像根(/) 文件系统或其他对系统非常关键的文件系统
 只有两个磁盘或控制器可用
 需要执行无人参与型系统重新引导
如果启用此参数,则系统可能会使用不能正确表示系统状态(包括哪些镜
像端完好,或哪些镜像端处于维护状态)的过时副本进行引导。这种情况
可能会导致数据损坏或系统崩溃。
仅当系统可用性比数据一致性和完整性更重要时,才应更改此参数。密切
监视系统中的任何故障。可以通过尽可能减少故障卷的个数、维护卷的个
数或热交换卷的个数来减小风险。
有关状态数据库副本的更多信息,请参见《Solaris Volume Manager
Administration Guide》中的第6 章,“State Database (Overview)”。
承诺级别不稳定
网络驱动程序参数
intr_blank_time 和intr_blank_packets
说明在SPARC 系统上,这些参数影响板上网络吞吐量和等待时间。
如果禁用了中断抑制(interrupt blanking) 功能,则包会在到达目的地时立即
由驱动程序进行处理,这样会提高网络吞吐量并缩短等待时间,但是需要
占用更多的CPU。在禁用中断抑制(interrupt blanking) 功能的情况下,在某
些高负荷的Web 服务器环境中,处理器使用率可以高达80%–90%。
如果启用中断抑制(interrupt blanking) 功能,则包会在发出中断命令时进行
处理。启用中断抑制(interrupt blanking) 功能会降低处理器使用率和网络吞
吐量,并延长网络等待时间。
网络驱动程序参数
78 Solaris 可调参数参考手册• 2006 年10 月
应该同时设置这两个参数。可使用ndd 命令按如下方式设置这些参数:
# ndd -set /dev/eri intr_blank_time 0
# ndd -set /dev/eri intr_blank_packets 0
可按如下方式将它们添加到/etc/system 文件中:
set eri:intr_blank_time 0
set eri:intr_blank_packets 0
缺省值在具有eri 驱动程序的SPARC 系统上,这两个参数为启用状态。
在具有hme 驱动程序的SPARC 系统上,这两个参数为禁用状态。
范围0(禁用)或1(启用)
是否为动态是
验证无
何时更改中断抑制(interrupt blanking) 参数值综合考虑了网络吞吐量和处理器使用
率。如果为了获取较高的网络吞吐量而可以接受较高的处理器使用率,则
可禁用中断抑制(interrupt blanking) 功能。如果首选较低的处理器使用率并
且可以接受网络等待时间延长,则可启用中断抑制(interrupt blanking) 功
能。
承诺级别不稳定
网络驱动程序参数
第2 章• Solaris 内核可调参数79
80
NFS 可调参数
本章介绍NFS 可调参数。
 第81 页中的“调优NFS 环境”
 第82 页中的“NFS 模块参数”
 第106 页中的“nf***v 模块参数”
 第108 页中的“rpcmod 模块参数”
有关可调参数的参考信息
可调参数参考
Solaris 内核可调参数第2 章
Internet 协议套件可调参数第4 章
网络高速缓存和加速器(Network Cache and
Accelerator, NCA) 可调参数
第5 章
调优NFS 环境
可以在/etc/system 文件(在引导过程中读取)中定义NFS 参数。每个参数都包含其关联的
内核模块的名称。有关更多信息,请参见第22 页中的“调优Solaris 系统”。
注意– 在不同的发行版中,参数名称、参数所在的模块以及缺省值可能会有所不同。更改或
应用先前版本中的值之前,请查看文档以了解现用SunOS 发行版的版本。
3第3 章
81
NFS 模块参数
本节介绍与NFS 内核模块相关的参数。
nfs:nfs3_pathconf_disable_cache
说明控制对已挂载NFS 版本3 的文件系统的pathconf 信息的高速缓存。
数据类型整数(32 位)
缺省值0(启用高速缓存)
范围0(启用高速缓存)或1(禁用高速缓存)
单位布尔值
是否为动态是
验证无
何时更改基于每个文件高速缓存pathconf 信息。但是,如果服务器可以动态更改特
定文件的信息,应使用此参数禁用高速缓存。客户机没有用于验证其高速
缓存项的机制。
承诺级别不稳定
nfs:nfs4_pathconf_disable_cache
说明控制对已挂载NFS 版本4 的文件系统的pathconf 信息的高速缓存。
数据类型整数(32 位)
缺省值0(启用高速缓存)
范围0(启用高速缓存)或1(禁用高速缓存)
单位布尔值
是否为动态是
验证无
何时更改基于每个文件高速缓存pathconf 信息。但是,如果服务器可以动态更改特
定文件的信息,应使用此参数禁用高速缓存。客户机没有用于验证其高速
缓存项的机制。
承诺级别不稳定
NFS 模块参数
82 Solaris 可调参数参考手册• 2006 年10 月
nfs:nfs_allow_preepoch_time
说明控制具有错误时间标记或负时间标记的文件在客户机上是否可见。
以前,NFS 客户机或NFS 服务器都不对返回的文件时间执行任何范围检
查。线上时间标记值不带符号并且长度为32 位。因此,所有值都合法。
但是,在运行32 位Solaris 内核的系统上,时间标记值带有符号并且长度为
32 位。因此,可以存在表示1970 年1 月1 日之前或纪元之前的时间标记。
在运行64 位Solaris 内核的系统上,问题稍有不同。64 位Solaris 内核上的时
间标记值带有符号并且长度为64 位。无法确定时间字段表示的是完整的32
位时间还是负时间(即1970 年1 月1 日之前的时间)。
从32 位转换为64 位时,无法确定是否要对时间值进行符号扩展。如果时间
值确实为负数,则应该对此时间值进行符号扩展。但是,如果时间值实际
上表示完整的32 位时间值,则不应对此时间值进行符号扩展。只需禁用完
整的32 位时间值即可解决此问题。
数据类型整数(32 位)
缺省值0(禁用32 位时间标记)
范围0(禁用32 位时间标记)或1(启用32 位时间标记)
单位布尔值
是否为动态是
验证无
何时更改即使在正常运行期间,也可以将某些文件的时间标记值设置为将来很长的
时间或过去很长的时间。如果希望使用已挂载NFS 的文件系统访问这些文
件,应将此参数设置为1 以允许不经过检查便可传递时间标记值。
承诺级别不稳定
nfs:nfs_cots_timeo
说明控制已挂载NFS 版本2 的文件系统的缺省RPC 超时时间,此文件系统使用
面向连接的传输协议(如TCP)。
数据类型带符号整数(32 位)
缺省值600(60 秒)
范围0 到231 - 1
单位十分之一秒