跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 可调参数参考手册 Oracle Solaris 11 Information Library (简体中文) |
本节介绍了与物理内存和栈配置相关的常规内核参数。
无符号长整数
系统上可用物理内存的可用页数,不包括用于存储核心内核和数据的内存
1 - 系统上的物理内存量
页
否
无
要测试以较少的物理内存运行系统的效果时。因为此参数不考虑核心内核和数据使用的内存以及启动进程中早期分配的各种其他数据结构使用的内存,因此 physmem 的值应该小于表示较少内存量的实际页数。
不稳定
确定 ZFS 自适应替换高速缓存 (Adaptive Replacement Cache, ARC) 的最小大小。另请参见zfs_arc_max。
无符号整数(64 位)
64 MB
64 MB - zfs_arc_max
字节
否
是,将对范围进行验证。
如果系统的工作负荷对内存的需求起伏波动,ZFS ARC 会在弱需求期间缓存数据,然后在强需求期间收缩。不过,ZFS 在低于 zfs_arc_min 的值时不会收缩。一般情况下,不需要更改缺省值。
不稳定
有关信息,请参见zfs_arc_min (Oracle Solaris 11)。
确定 ZFS 自适应替换高速缓存 (Adaptive Replacement Cache, ARC) 的最大大小。另请参见zfs_arc_min。
无符号整数(64 位)
在内存少于 4 GB 的系统上为内存的四分之三
在内存大于 4 GB 的系统上为 physmem 减去 1 GB
64 MB - physmem
字节
否
是,将对范围进行验证。
如果将来的内存需求非常大并且有明确范围,可以考虑减小此参数的值来限制 ARC 的上限,从而使它不会因内存需求而发生争用。例如,如果知道将来的工作负荷需要 20% 的内存,则可以相应设置 ARC 上限,使它消耗的内存不会超过剩余的 80% 内存。
不稳定
有关信息,请参见zfs_arc_max (Oracle Solaris 11)。
指定所有线程的缺省栈大小。任何线程创建时具有的栈大小都不能小于 default_stksize。如果设置了 default_stksize,它会覆盖 lwp_default_stksize。另请参见lwp_default_stksize。
整数
在 SPARC 系统上为 3 x PAGESIZE
在 x64 系统上为 5 x PAGESIZE
最小值为缺省值:
在 SPARC 系统上为 3 x PAGESIZE
在 x64 系统上为 5 x PAGESIZE
最大值为缺省值的 32 倍。
getpagesize 参数返回的值的倍数字节。有关更多信息,请参见 getpagesize(3C)。
是。影响在变量更改后创建的线程。
必须大于或等于 8192 且小于或等于 262,144 (256 x 1024)。还必须是系统页大小的倍数。如果不满足这些条件,将显示以下消息:
Illegal stack size, Using N
N 的值是 default_stksize 的缺省值。
当系统因为用完栈空间而崩溃时。此问题的最佳解决方法是确定系统为何用完空间,然后进行纠正。
增大缺省栈大小意味着几乎每个内核线程都将具有更大的栈,从而导致内核内存消耗增加却没有合理原因。一般情况下,该空间将处于未使用状态。消耗增加意味着争用同一内存池的其他资源的可用空间将减少,从而可能降低系统执行工作的能力。其中一个负面影响是内核可以创建的线程数将减少。此解决方法只能作为在纠正根本原因之前采取的临时解决方法。
不稳定
整数
对于 SPARC 平台为 24,576
对于 x64 平台为 20,480
最小值为缺省值:
在 SPARC 系统上为 3 x PAGESIZE
在 x64 系统上为 5 x PAGESIZE
最大值为缺省值的 32 倍。
getpagesize 参数返回的值的倍数字节。有关更多信息,请参见 getpagesize(3C)。
是。影响在变量更改后创建的线程。
必须大于或等于 8192 且小于或等于 262,144 (256 x 1024)。还必须是系统页大小的倍数。如果不满足这些条件,将显示以下消息:
Illegal stack size, Using N
N 的值是 lwp_default_stksize 的缺省值。
当系统因为用完栈空间而崩溃时。此问题的最佳解决方法是确定系统为何用完空间,然后进行纠正。
增大缺省栈大小意味着几乎每个内核线程都将具有更大的栈,从而导致内核内存消耗增加却没有合理原因。一般情况下,该空间将处于未使用状态。消耗增加意味着争用同一内存池的其他资源的可用空间将减少,从而可能降低系统执行工作的能力。其中一个负面影响是内核可以创建的线程数将减少。此解决方法只能作为在纠正根本原因之前采取的临时解决方法。
不稳定
允许排队并等待传送到 syseventd 守护进程的最大系统事件数。一旦系统事件队列的大小达到此限制,队列中将不允许任何额外的系统事件。
整数
5000
0 - MAXINT
系统事件
是
每次 ddi_log_sysevent 和 sysevent_post_event 生成系统事件时,系统事件框架都会检查该值。
有关更多信息,请参见 ddi_log_sysevent(9F) 和 sysevent_post_event(3SYSEVENT)。
当错误日志消息指出无法记录、生成或发布系统事件时。
不稳定
指定可用的内核可分页内存量。此内存主要用于内核线程栈。增大该值将允许为相同数量的线程或更多线程使用更大的栈。运行 64 位内核的系统使用 24 KB 的缺省栈大小。
无符号长整数
2 GB
512 MB - 24 GB
8-KB 页
否
该值将与最小大小和最大大小(512 MB 和 24 GB)进行比较。如果小于最小值或大于最大值,会将该值重置为 2 GB。将显示一条消息来指示该结果。
创建高速缓存时使用的实际大小是以下两项中的较小值:验证检查后在 segkpsize 中指定的值或者 50% 的物理内存。
需要更改此参数以在系统上支持大量进程时。缺省大小为 2 GB,假定至少具有 1 GB 的物理内存。该缺省大小允许为超过 87,000 个内核线程创建 24-KB 的栈。不论进程是 32 位进程还是 64 位进程,栈的大小都是相同的。如果需要大于该值,可以增大 segkpsize,假设存在足够物理内存。
不稳定
将栈标记为不可执行的,这有助于更好地阻止缓冲区溢出攻击。
运行有 64 位内核的 Oracle Solaris 系统在缺省情况下使所有 64 位应用程序的栈成为不可执行的。要使 32 位应用程序成为不可执行的,需要设置此参数。
带符号整数
0(禁用)
0(禁用)或 1(启用)
切换(开/关)
是。不影响当前正在运行的进程,仅影响在设置该值后创建的进程。
无
应始终启用,除非应用程序故意将可执行代码放在栈上,且没有使用 mprotect 使栈成为可执行的。有关更多信息,请参见 mprotect(2)。
不稳定