Solaris 可调参数参考手册

常规内核参数和内存参数

本节介绍与物理内存和栈配置相关的常规内核参数。

physmem

说明

考虑 Solaris OS 和固件所占用的物理内存之后,修改系统的物理内存页数配置。

数据类型

无符号长整数

缺省值

系统上可用物理内存页数(未将存储核心内核和数据的内存计算在内)

范围

1 到系统上的物理内存量

单位

是否为动态

验证

何时更改

需要测试使用更少的物理内存运行系统的效果时。由于此参数没有考虑核心内核和数据使用的内存,也没有考虑先前在启动过程中分配的各种其他数据结构使用的内存,因此 physmem 的值应该小于表示较小内存量的实际页数。

承诺级别

不稳定

default_stksize

说明

指定所有线程的缺省栈大小。无法创建任何栈大小小于 default_stksize 的线程。如果设置了 default_stksize,则会覆盖 lwp_default_stksize。另请参见lwp_default_stksize

数据类型

整数

缺省值
  • 在 SPARC 系统上,为 PAGESIZE 的 3 倍

  • 在 x86 系统上,为 PAGESIZE 的 2 倍

  • 在 AMD64 系统上,为 PAGESIZE 的 5 倍

范围

最小值为缺省值:

  • 在 SPARC 系统上,为 PAGESIZE 的 3 倍

  • 在 x86 系统上,为 PAGESIZE 的 2 倍

  • 在 AMD64 系统上,为 PAGESIZE 的 5 倍

最大值为缺省值的 32 倍。

单位

字节,大小为 getpagesize 参数返回的值的倍数。有关更多信息,请参见 getpagesize(3C)

是否为动态

是。影响更改变量之后创建的线程。

验证

必须大于或等于 8192,并且小于或等于 262,144 (256 x 1024)。同时,还必须是系统页面大小的倍数。如果不满足这些条件,则会显示以下消息:


Illegal stack size, Using N

Ndefault_stksize 的缺省值。

何时更改

系统由于用完栈空间而发出警告音时。此问题的最佳解决方案是确定系统用完空间的原因,然后再进行更正。

增大缺省栈大小意味着几乎每个内核线程都将具有更大的栈,从而导致无故增加内核内存消耗。通常不会使用增加的空间。消耗增加意味着争用同一内存池的其他资源具有的可用空间量将减少,从而可能会降低系统执行操作的能力。其中一个负面影响是内核可创建的线程数减少。在找出根本原因并解决问题之前,只应将此解决方案作为一种临时解决方法。

承诺级别

不稳定

lwp_default_stksize

说明

指定栈大小的缺省值,在创建内核线程时,如果调用例程未提供要使用的确切栈大小,则将使用该值。

数据类型

整数

缺省值
  • 对于 x86 平台,为 PAGESIZE 的 2 倍

  • 对于 SPARC 平台,为 PAGESIZE 的 5 倍

  • 对于 AMD64 平台,为 PAGESIZE 的 3 倍

范围

最小值为缺省值:

  • 在 SPARC 系统上,为 PAGESIZE 的 3 倍

  • 在 x86 系统上,为 PAGESIZE 的 2 倍

  • 在 AMD64 系统上,为 PAGESIZE 的 5 倍

最大值为缺省值的 32 倍。

单位

字节,大小为 getpagesize 参数返回的值的倍数。有关更多信息,请参见 getpagesize(3C)

是否为动态

是。影响更改变量之后创建的线程。

验证

必须大于或等于 8192,并且小于或等于 262,144 (256 x 1024)。同时,还必须是系统页面大小的倍数。如果不满足这些条件,则会显示以下消息:


Illegal stack size, Using N

Nlwp_default_stksize 的缺省值。

何时更改

系统由于用完栈空间而发出警告音时。此问题的最佳解决方案是确定系统用完空间的原因,然后再进行更正。

增大缺省栈大小意味着几乎每个内核线程都将具有更大的栈,从而导致无故增加内核内存消耗。通常不会使用增加的空间。消耗增加意味着争用同一内存池的其他资源具有的可用空间量将减少,从而可能会降低系统执行操作的能力。其中一个负面影响是内核可创建的线程数减少。在找出根本原因并解决问题之前,只应将此解决方案作为一种临时解决方法。

承诺级别

不稳定

更改历史记录

有关信息,请参见lwp_default_stksize(Solaris 9 发行版)

logevent_max_q_sz

说明

允许排队等待传送到 syseventd 守护进程的最大系统事件数。一旦系统事件队列的大小达到此限制,便不再允许向队列中添加任何其他系统事件。

数据类型

整数

缺省值

5000

范围

0 到 MAXINT

单位

系统事件

是否为动态

验证

每当 ddi_log_syseventsysevent_post_event 生成系统事件时,系统事件框架都会检查此值。

有关更多信息,请参见 ddi_log_sysevent(9F)sysevent_post_event(3SYSEVENT)

何时更改

错误日志消息指示无法记录、生成或发布系统事件时。

承诺级别

不稳定

更改历史记录

有关信息,请参见logevent_max_q_sz(Solaris 9 发行版)

segkpsize

说明

指定可用的内核可分页内存量。此内存主要用于内核线程栈。增大此数值可允许相同数量的线程使用更大的栈或允许存在更多的线程。只能在运行 64 位内核的系统上设置此参数。运行 64 位内核的系统使用的缺省栈大小为 24 KB。

数据类型

无符号长整数

缺省值

对于 64 位内核,为 2 GB

对于 32 位内核,为 512 MB

范围

对于 64 位内核,为 512 MB 到 24 GB

单位

8 KB 页

是否为动态

验证

将此值与最小值和最大值(对于 64 位系统,分别为 512 MB 和 24 GB)进行比较。如果此值小于最小值或大于最大值,则将其重置为 2 GB,同时显示相关消息。

创建高速缓存时使用的实际大小是验证检查之后在 segkpsize 中指定的值和物理内存的 50% 之间的较小值。

何时更改

需要支持系统上的大量进程时。缺省大小为 2 GB(假设至少存在 1 GB 的物理内存)。此缺省大小允许为多于 87,000 个的内核线程创建 24 KB 的栈。在 64 位内核中,无论进程是 32 位进程还是 64 位进程,栈的大小都相同。如果所需大小超过此值,则可以增大 segkpsize(假设存在足够的物理内存)。

承诺级别

不稳定

更改历史记录

有关信息,请参见segkpsize(Solaris 9 12/02 发行版)

noexec_user_stack

说明

用于将栈标记为不可执行,这样可阻止缓冲区溢出攻击。

缺省情况下,运行 64 位内核的 Solaris 系统将所有 64 位应用程序的栈都标记为不可执行。要使 32 位应用程序不能在运行 64 位或 32 位内核的系统上执行,则有必要设置此参数。


注 –

此参数存在于所有运行 Solaris 2.6、7、8、9 或 10 发行版的系统上,但它仅对 64 位 SPARC 和 AMD64 体系结构有效。


数据类型

带符号整数

缺省值

0(禁用)

范围

0(禁用)或 1(启用)

单位

切换(开/关)

是否为动态

是。不会影响当前正在运行的进程,只影响在设置此值之后创建的进程。

验证

何时更改

应始终处于启用状态,除非应用程序要故意在不使用 mprotect 的情况下在栈中放置可执行代码以使栈可执行。有关更多信息,请参见 mprotect(2)

承诺级别

不稳定

更改历史记录

有关信息,请参见noexec_user_stack(Solaris 9 发行版)