调优 Oracle Solaris 内核
下面的表格描述了可用来应用可调参数的不同方式。
以下列方式应用可调参数
更多信息
修改 /etc/system 文件
使用内核调试器 (kmdb)
使用模块调试器 (mdb)
使用 ipadm 命令设置 TCP/IP 参数
修改 /etc/default 文件
/etc/system 文件
/etc/system 文件中提供了用于调整内核参数值的静态机制。在引导时读取此文件中指定的值,然后进行应用。在重新引导系统之前,对文件所做的任何更改都不会应用到操作系统。
在计算配置参数之前,会进行一遍检查来设置所有值。
示例-在 /etc/system 中设置参数
以下 /etc/system 条目将 ZFS ARC 最大值 (zfs_arc_max) 设置为 30 GB。set zfs:zfs_arc_max = 0x780000000
从不正确值进行恢复
在修改 /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 命令
模块化调试器 mdb 是各个 Solaris 调试器中比较独特的,因为它可以轻松扩展。有一个编程 API 可用,可用来编辑模块以便在调试器的上下文中执行所需任务。
mdb 还包括一系列所需的可用性功能,包括命令行编辑、命令历史记录、内置输出分页程序、语法检查和命令流水线作业。mdb 是适用于内核的推荐用事后分析调试器。
有关更多信息,请参见mdb(1)。
示例-使用 mdb 显示信息。
显示系统的内存使用情况的高级别视图。例如:# mdb -k
Loading modules: [ unix genunix specfs dtrace mac cpu.generic cpu_ms.AuthenticAMD.15
uppc pcplusmp scsi_vhci zfs mpt sd ip hook neti arp usba sockfs kssl qlc fctl stmf stmf_
sbd md lofs random idm fcp crypto cpc smbsrv nfs fcip sppp ufs logindmux ptm nsmb scu
mpt_sas pmcs emlxs ]
> ::memstat
Page Summary Pages MB %Tot
------------ ---------------- ---------------- ----
Kernel 160876 628 16%
ZFS File Data 303401 1185 30%
Anon 25335 98 2%
Exec and libs 1459 5 0%
Page cache 5083 19 1%
Free (cachelist) 6616 25 1%
Free (freelist) 510870 1995 50%
Total 1013640 3959
Physical 1013639 3959
> $q
在使用 kmdb 或 mdb 调试器时,模块名称前缀不是必需的。加载模块之后,其符号连同核心内核符号及之前加载的任何其他模块符号会构成一个通用名称空间。