Solaris 可调参数参考手册

调优 Solaris 内核

下表介绍了可以应用可调参数的不同方法。

应用可调参数的方法 

更多信息 

修改 /etc/system 文件

/etc/system 文件

使用内核调试程序 (kmdb)

kmdb 命令

使用模块调试程序 (mdb)

mdb 命令

使用 ndd 命令设置 TCP/IP 参数

第 4 章,Internet 协议套件可调参数

修改 /etc/default 文件

调优 NCA 参数

/etc/system 文件

/etc/system 文件提供了用于调整内核参数值的静态机制。引导时会读取此文件中指定的值并应用这些值。对此文件所做的任何更改仅在重新引导操作系统之后才会应用于该系统。

在 Solaris 8 发行版之前,在以下两个阶段中应用了用于设置参数值的 /etc/system 项:

有时,第二个阶段会对用户和管理员造成困惑,原因是将参数设置为似乎不允许的值,或是对初始配置过程中覆盖了其中一个值的参数(如 max_nprocs)进行了赋值。

从 Solaris 8 发行版开始,在计算配置参数之前将一次设置所有值。

示例-在 /etc/system 中设置参数

以下 /etc/system 项用于设置针对使用 NFS 版本 2 软件挂载的文件系统所读取的读前块数。


set nfs:nfs_nra=4

从错误值中恢复

请在修改 /etc/system 文件之前生成其副本,以便可以轻松从错误值中恢复。例如:


# cp /etc/system /etc/system.good

如果 /etc/system 文件中指定的值导致系统无法引导,则可以使用以下命令进行恢复:


ok boot -a

此命令将使系统要求提供在引导过程中使用的各种文件的名称。请按回车键接受缺省值,直到请求 /etc/system 文件的名称为止。显示 Name of system file [/etc/system]: 提示时,请键入完好的 /etc/system 文件或 /dev/null 的名称:


Name of system file [/etc/system]: /etc/system.good

如果指定了 /dev/null,则此路径将导致系统尝试从 /dev/null 中读取其配置信息。由于此文件为空,因此系统会使用缺省值。引导系统之后,即可更正 /etc/system 文件。

有关系统恢复的更多信息,请参见《系统管理指南:基本管理》

kmdb 命令

kmdb 是一个交互式内核调试程序,其通用语法与 mdb 相同。交互式内核调试程序的一个优点是可以设置断点。到达断点时,可以通过执行内核代码来检查数据或步骤。

可以根据需要装入和卸载 kmdb。不必像在 kadb 中那样重新引导系统来执行交互式内核调试。

有关更多信息,请参见kmdb(1)

mdb 命令

从 Solaris 8 发行版开始,将使用 mdb 作为模块调试程序,这是一种独特的 Solaris 调试程序,因为它很容易扩展。其中还有一个编程 API,可用于对模块进行编译,以便在调试程序环境中执行所需任务。

mdb 还包括一些所需的可用性功能,如命令行编辑、命令历史记录、内置输出页面调度程序、语法检查以及命令管道传输。mdb 是建议针对内核使用的事后调试程序。

有关更多信息,请参见mdb(1)

示例-使用 mdb 更改值

要将整数参数 maxusers 的值从 495 更改为 512,请执行以下操作:


# mdb -kw

Loading modules: [ unix krtld genunix ip logindmux ptm nfs ipc lofs ]

> maxusers/D

maxusers:

maxusers:       495

> maxusers/W 200

maxusers:       0x1ef           =       0x200

> $q

使用要更改的项的实际地址以及此参数将设置为的值来替换 maxusers

有关使用模块调试程序的更多信息,请参见《Solaris 模块调试程序指南》。

使用 kmdbmdb 调试程序时,不需要模块名称前缀。装入模块之后,其符号将形成一个公用名称空间,其中包括核心内核符号以及先前装入的其他任何模块符号。

例如,每个调试程序中会将 ufs:ufs_WRITES 作为 ufs_WRITES 进行访问(假定装入了 UFS 模块)。在 /etc/system 文件中进行设置时,需要 ufs: 前缀。