Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1299775
  • 博文数量: 554
  • 博客积分: 10425
  • 博客等级: 上将
  • 技术积分: 7555
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-09 09:49
文章分类

全部博文(554)

文章存档

2012年(1)

2011年(1)

2009年(8)

2008年(544)

分类:

2008-04-11 16:42:48


第1 章• Solaris 系统调优概述19
 第86 页中的“nfs:nfs4_do_symlink_cache”
 第87 页中的“nfs:nfs4_dynamic”
 第89 页中的“nfs:nfs4_lookup_neg_cache”
 第91 页中的“nfs:nfs4_max_threads”
 第93 页中的“nfs:nfs4_nra”
 第95 页中的“nfs:nfs4_shrinkreaddir”
 第99 页中的“nfs:nfs4_bsize”
 第101 页中的“nfs:nfs4_async_clusters”
 第104 页中的“nfs:nfs4_max_transfer_size”
有关NFSv4 参数的信息,请参见第82 页中的“NFS 模块参数”。
新增和已更改的TCP/IP 参数
本Solaris 发行版中新增了以下IP 参数:
 第117 页中的“ip_squeue_worker_wait”
 第117 页中的“ip_squeue_enter”
 第118 页中的“ip_squeue_fanout”
 第129 页中的“ipcl_conn_hash_size”
本Solaris 发行版中新增了以下TCP 参数:
 第127 页中的“tcp_rst_sent_rate_enabled”
 第128 页中的“tcp_rst_sent_rate”
 第128 页中的“tcp_mdt_max_pbufs”
本Solaris 发行版中,以下TCP/IP 参数已过时:
 ipc_tcp_conn_hash_size
 tcp_compression_enabled
 tcp_conn_hash_size
 ip_forwarding
 ip6_forwarding
 xxx_forwarding
IP 转发更改
在本Solaris 发行版中,使用routeadm 命令或ifconfig 命令来启用或禁用IP 转发,而不是使
用ndd 命令设置以下可调参数来启用或禁用:
 ip_forwarding
 ip6_forwarding
 xxx_forwarding
使用routeadm 命令和ifconfig 命令而不是ndd 命令来设置IP 转发具有以下优点:
 每次重新引导之后都会保留所有设置
Solaris 10 发行版中Solaris 系统调优方面的新增功能
20 Solaris 可调参数参考手册• 2006 年10 月
 新增的ifconfig router 和-router 命令可以与初始配置接口时运行的其他ifconfig 命令
一起放在/etc/hostname.interface 文件中。
要在系统的所有接口上启用IPv4 或IPv6 包转发,可使用以下命令:
# routeadm -e ipv4-forwarding
# routeadm -e ipv6-forwarding
要在系统的所有接口上禁用IPv4 或IPv6 包转发,可使用以下命令:
# routeadm -d ipv4-forwarding
# routeadm -d ipv6-forwarding
在以前的Solaris 发行版中,可使用如下命令在系统的所有接口上启用IPv4 或IPv6 包转发:
# ndd -set /dev/ip ip_forwarding 1
# ndd -set /dev/ip ip6_forwarding 1
在以前的Solaris 发行版中,可使用如下命令在系统的所有接口上禁用IPv4 或IPv6 包转发:
# ndd -set /dev/ip ip_forwarding 0
# ndd -set /dev/ip ip6_forwarding 0
如果要在特定的IPv4 接口或IPv6 接口上启用IP 转发,可针对相应接口使用以下类似语法。
以下以bge0 接口为例。
# ifconfig bge0 router
# ifconfig bge0 inet6 router
如果要在特定的IPv4 接口或IPv6 接口上禁用IP 转发,可针对相应接口使用以下类似语法。
以下以bge0 接口为例。
# ifconfig bge0 -router
# ifconfig bge0 inet6 -router
以前,使用如下命令在特定接口上启用IP 转发:
# ndd -set /dev/ip bge0:ip_forwarding 1
# ndd -set /dev/ip bge0:ip_forwarding 1
以前,使用如下命令在特定接口上禁用IP 转发:
Solaris 10 发行版中Solaris 系统调优方面的新增功能
第1 章• Solaris 系统调优概述21
# ndd -set /dev/ip ip_forwarding 0
# ndd -set /dev/ip ip6_forwarding 0
如果希望上述任一routeadm 设置在运行的系统上生效,请使用以下命令:
# routeadm -u
有关更多信息,请参见routeadm(1M) 和ifconfig(1M)。
SPARC: 转换存储缓冲区(Translation Storage Buffer,
TSB) 参数
本发行版中包括用于调优转换存储缓冲区(Translation Storage Buffer, TSB) 的新增参数。有关
TSB 参数的信息,请参见第74 页中的“Sun-4u 特定参数”。
SCTP 可调参数
本Solaris 发行版中提供了流控制传输协议(Stream Control Transmission Protocol, SCTP),它
是一种可靠的传输协议,提供的服务与TCP 所提供的类似。有关SCTP 可调参数的更多信
息,请参见第133 页中的“SCTP 可调参数”。
调优Solaris 系统
Solaris OS 是在SPARC 和x86 处理器上运行的多线程且可伸缩的UNIX® 操作系统。它可根据
系统负载自行调整,并且只需进行最少的调优。但是,在某些情况下,必须进行调优。本
书提供了有关可用于Solaris OS 的正式支持的内核调优选项的详细信息。
Solaris 内核包括一个始终装入的核心部分,以及一些只在被引用时才装入的可装入模块。
本指南的内核部分中引用的许多变量都位于核心部分。但是,一些变量则位于可装入模块
中。
系统调优中的一个关键注意事项是:设置系统参数(或系统变量)通常是可用来提高性能
的效果最差的操作,而更改应用程序的行为通常可以最有效地帮助实现系统调优。添加更
多物理内存以及平衡磁盘I/O 模式也非常有用。在极少数情况下,更改本指南中介绍的其中
一个变量将对系统性能产生很大影响。
请记住,一个系统的/etc/system 设置,无论是从整体还是部分而言,可能都不适用于另一
个系统的环境。请针对应用该文件中的设置值的环境仔细考虑这些值。请确保首先了解一
个系统的行为,然后再尝试对此处介绍的系统变量应用更改。
调优Solaris 系统
22 Solaris 可调参数参考手册• 2006 年10 月
注意– 本书中介绍的可调参数在不同的发行版之间可以有所不同,实际情况也是如此。发行
版可以是Solaris Update 发行版,也可以是新的发行版,如Solaris 10。发布这些可调参数
时,不排除在未发出通知的情况下对可调参数及其说明进行的更改。
调优可调参数时应用的说明格式
对于每个可调参数,其说明格式如下:
 参数名称
 说明
 数据类型
 缺省值
 范围
 单位
 是否为动态
 验证
 含义
 何时更改
 承诺级别
 更改历史记录
参数名称/etc/system 文件中键入或在/etc/default/facility 文件中找到的确切名
称。
大多数参数名称的形式为不包含冒号(:) 的参数。这些名称是指内核的核
心部分中的变量。如果名称确实包含冒号,则冒号左侧的字符将引用可
装入模块的名称。模块内参数的名称由冒号右侧的字符组成。例如:
module_name:variable
说明简要介绍参数的作用及其控制的内容。
数据类型指示带符号或无符号的短整数或长整数,区别如下:
 在运行32 位内核的系统上,长整数与整数大小相同。
 在运行64 位内核的系统上,长整数的宽度(以位为单位)是整数的两
倍。例如,无符号整数= 32 位,无符号长整数= 64 位。
单位(可选)介绍单位类型。
缺省值系统用作缺省值的值。
范围指定系统验证允许的可能范围或数据类型的限制。
 MAXINT-带符号整数的最大值(2,147,483,647) 的缩略说明
 MAXUINT-无符号整数的最大值(4,294,967,295) 的缩略说明
调优可调参数时应用的说明格式
第1 章• Solaris 系统调优概述23
是否为动态如果可以使用mdb 或kmdb 调试程序在运行的系统上更改参数,则表明此
参数为动态参数。如果参数只能在引导时进行初始化,则表明此参数不
是动态参数。
验证检查系统是应用/etc/system 文件中指定的变量值还是应用缺省值,并检
查何时应用验证。
含义(可选)提供可能针对此参数存在的未声明的约束,尤其是相对于其他
参数的约束。
何时更改说明某个用户可能要更改该值的原因,其中包括错误消息或返回代码。
承诺级别标识接口的稳定性。本手册中的许多参数仍在改进中,因此属于不稳定
参数。有关更多信息,请参见attributes(5)。
更改历史记录(可选)包含指向“更改历史记录”附录的链接(如果适用)。
调优Solaris 内核
下表介绍了可以应用可调参数的不同方法。
应用可调参数的方法更多信息
修改/etc/system 文件第24 页中的“/etc/system 文件”
使用内核调试程序(kmdb) 第25 页中的“kmdb 命令”
使用模块调试程序(mdb) 第25 页中的“mdb 命令”
使用ndd 命令设置TCP/IP 参数第4 章
修改/etc/default 文件第143 页中的“调优NCA参数”
/etc/system 文件
/etc/system 文件提供了用于调整内核参数值的静态机制。引导时会读取此文件中指定的值
并应用这些值。对此文件所做的任何更改仅在重新引导操作系统之后才会应用于该系统。
在Solaris 8 发行版之前,在以下两个阶段中应用了用于设置参数值的/etc/system 项:
 第一个阶段将获取各种引导参数(例如maxusers)来初始化关键的系统参数。
 第二个阶段将使用引导参数来计算基本配置,并应用/etc/system 文件中指定的所有
值。对于引导参数,重新应用的值将替换在初始化阶段中计算或重置的值。
有时,第二个阶段会对用户和管理员造成困惑,原因是将参数设置为似乎不允许的值,或
是对初始配置过程中覆盖了其中一个值的参数(如max_nprocs)进行了赋值。
从Solaris 8 发行版开始,在计算配置参数之前将一次设置所有值。
调优Solaris 内核
24 Solaris 可调参数参考手册• 2006 年10 月
示例-在/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 文件。
有关系统恢复的更多信息,请参见《System Administration Guide: Basic Administration》。
kmdb 命令
kmdb 是一个交互式内核调试程序,其通用语法与mdb 相同。交互式内核调试程序的一个优
点是可以设置断点。到达断点时,可以通过执行内核代码来检查数据或步骤。
可以根据需要装入和卸载kmdb。不必像在kadb 中那样重新引导系统来执行交互式内核调
试。
有关更多信息,请参见kmdb(1)。
mdb 命令
从Solaris 8 发行版开始,将使用mdb 作为模块调试程序,这是一种独特的Solaris 调试程序,
因为它很容易扩展。其中还有一个编程API,可用于对模块进行编译,以便在调试程序环境
中执行所需任务。
mdb 还包括一些所需的可用性功能,如命令行编辑、命令历史记录、内置输出页面调度程
序、语法检查以及命令管道传输。mdb 是建议针对内核使用的事后调试程序。
有关更多信息,请参见mdb(1)。
调优Solaris 内核
第1 章• Solaris 系统调优概述25
示例-使用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 模块调试程序指南》。
使用kmdb 或mdb 调试程序时,不需要模块名称前缀。装入模块之后,其符号将形成一个公
用名称空间,其中包括核心内核符号以及先前装入的其他任何模块符号。
例如,每个调试程序中会将ufs:ufs_WRITES 作为ufs_WRITES 进行访问(假定装入了UFS 模
块)。在/etc/system 文件中进行设置时,需要ufs: 前缀。
特殊的Solaris tune 和var 结构
Solaris 可调参数具有各种形式。tune 结构(在/usr/include/sys/tuneable.h 文件中定义)
是tune_t_fsflushr、tune_t_minarmem 以及tune_t_flkrec 的运行时表示形式。初始化内核
之后,可在tune 结构的相应字段中找到对这些变量的所有引用。
各种文档(例如《Solaris System Administration Guide, Volume 2》的早期版本)均已指明在
tune 结构中设置参数的正确方法是使用语法tune:field-name,其中field-name 将由以上列出
的实际参数名称所替换。此过程将在不出现提示的情况下失败。在引导时针对此结构设置
参数的正确方法是初始化对应于所需字段名称的特殊参数。然后,系统初始化过程会将这
些值装入tune 结构。
用来放置各种可调参数的另一个结构是名为v 的var 结构。可以在/usr/include/sys/var.h
文件中找到var 结构的定义。变量(如autoup 和bufhwm)的运行时表示形式即存储在此位
置。
请勿在运行的系统上更改tune 或v 结构。在运行的系统上更改这些结构中的任何字段都可
能导致系统发生混乱。
特殊的Solaris tune 和var 结构
26 Solaris 可调参数参考手册• 2006 年10 月
查看Solaris 系统配置信息
可使用多种工具检查系统配置信息。部分工具需要超级用户权限。其他工具可以由非特权
用户运行。通过在运行的系统上使用mdb 或在kmdb 下进行引导,可以借助内核调试程序来
检查每个结构和数据项。
有关更多信息,请参见mdb(1) 或kadb(1M)。
sysdef 命令
sysdef 命令可提供System V IPC 设置、STREAMS 可调参数、进程资源限制以及tune 和v 结
构的各部分的值。例如,512MB的SunTM UltraTM 80 系统上的sysdef “可调参数”部分如下所
示:
10387456 maximum memory allowed in buffer cache (bufhwm)
7930 maximum number of processes (v.v_proc)
99 maximum global priority in sys class (MAXCLSYSPRI)
7925 maximum processes per user id (v.v_maxup)
30 auto update time limit in seconds (NAUTOUP)
25 page stealing low water mark (GPGSLO)
5 fsflush run rate (FSFLUSHR)
25 minimum resident memory for avoiding deadlock (MINARMEM)
25 minimum swapable memory for avoiding deadlock (MINASMEM)
有关更多信息,请参见sysdef(1M)。
kstat 实用程序
kstat 是由各种内核子系统和驱动程序维护的数据结构。它们提供了一种机制,可将内核中
的数据导出到用户程序,而无需程序读取内核内存或具有超级用户权限。有关更多信息,
请参见kstat(1M) 或kstat(3KSTAT)。
从Solaris 8 发行版开始,kstat 命令可用于通过命令行界面来选择和显示kstat。另外,也
可以使用Perl 模块Kstat(3PERL) 来处理kstat 信息。
kstat 实用程序
第1 章• Solaris 系统调优概述27
注– unix 模块中名为system_pages 的kstat 数据结构不会报告cachefree 的统计信息。从
Solaris 9 发行版开始,不支持cachefree。
kstat 实用程序
28 Solaris 可调参数参考手册• 2006 年10 月
Solaris 内核可调参数
本章介绍大多数Solaris 内核可调参数。
 第30 页中的“常规内核参数和内存参数”
 第34 页中的“fsflush 及相关参数”
 第38 页中的“进程大小调整参数”
 第41 页中的“与分页相关的参数”
 第49 页中的“与交换相关的参数”
 第50 页中的“内核内存分配器”
 第52 页中的“常规驱动程序参数”
 第55 页中的“常规I/O 参数”
 第57 页中的“常规文件系统参数”
 第60 页中的“UFS 参数”
 第66 页中的“TMPFS 参数”
 第67 页中的“伪终端”
 第69 页中的“STREAMS 参数”
 第70 页中的“System V 消息队列”
 第71 页中的“System V 信号”
 第71 页中的“System V 共享内存”
 第72 页中的“调度”
 第73 页中的“计时器”
 第74 页中的“Sun-4u 特定参数”
 第77 页中的“Solaris Volume Manager 参数”
 第78 页中的“网络驱动程序参数”
有关可调参数的参考信息
可调参数参考
NFS 可调参数第3 章
2第2 章
29
可调参数参考
Internet 协议套件可调参数第4 章
网络高速缓存和加速器(Network Cache and
Accelerator, NCA) 可调参数
第5 章
常规内核参数和内存参数
本节介绍与物理内存和栈配置相关的常规内核参数。
physmem
说明考虑Solaris OS 和固件所占用的物理内存之后,修改系统的物理内存页数配
置。
数据类型无符号长整数
缺省值系统上可用物理内存页数(未将存储核心内核和数据的内存计算在内)
范围1 到系统上的物理内存量
单位页
是否为动态否
验证无
何时更改需要测试使用更少的物理内存运行系统的效果时。由于此参数没有考虑核
心内核和数据使用的内存,也没有考虑先前在启动过程中分配的各种其他
数据结构使用的内存,因此physmem 的值应该小于表示较小内存量的实际页
数。
承诺级别不稳定
default_stksize
说明指定所有线程的缺省栈大小。无法创建任何栈大小小于default_stksize 的
线程。如果设置了default_stksize,则会覆盖lwp_default_stksize。另请
参见第31 页中的“lwp_default_stksize”。
数据类型整数
缺省值
 在SPARC 系统上,为PAGESIZE 的3 倍
 在x86 系统上,为PAGESIZE 的2 倍
 在AMD64 系统上,为PAGESIZE 的5 倍
常规内核参数和内存参数
30 Solaris 可调参数参考手册• 2006 年10 月
范围最小值为缺省值:
 在SPARC 系统上,为PAGESIZE 的3 倍
 在x86 系统上,为PAGESIZE 的2 倍
 在AMD64 系统上,为PAGESIZE 的5 倍
最大值为缺省值的32 倍。
单位字节,大小为getpagesize 参数返回的值的倍数。有关更多信息,请参见
getpagesize(3C)。
是否为动态是。影响更改变量之后创建的线程。
验证必须大于或等于8192,并且小于或等于262,144 (256 x 1024)。同时,还必须
是系统页面大小的倍数。如果不满足这些条件,则会显示以下消息:
Illegal stack size, Using N
值N 为default_stksize 的缺省值。
何时更改系统由于用完栈空间而发出警告音时。此问题的最佳解决方案是确定系统
用完空间的原因,然后再进行更正。
增大缺省栈大小意味着几乎每个内核线程都将具有更大的栈,从而导致无
故增加内核内存消耗。通常不会使用增加的空间。消耗增加意味着争用同
一内存池的其他资源具有的可用空间量将减少,从而可能会降低系统执行
操作的能力。其中一个负面影响是内核可创建的线程数减少。在找出根本
原因并解决问题之前,只应将此解决方案作为一种临时解决方法。
承诺级别不稳定
lwp_default_stksize
说明指定栈大小的缺省值,在创建内核线程时,如果调用例程未提供要使用
的确切栈大小,则将使用该值。
数据类型整数
缺省值
 对于x86 平台,为PAGESIZE 的2 倍
 对于SPARC 平台,为PAGESIZE 的5 倍
 对于AMD64 平台,为PAGESIZE 的3 倍
范围最小值为缺省值:
 在SPARC 系统上,为PAGESIZE 的3 倍
 在x86 系统上,为PAGESIZE 的2 倍
 在AMD64 系统上,为PAGESIZE 的5 倍
最大值为缺省值的32 倍。
常规内核参数和内存参数

 

 

以上文章转自于 : http://developers.sun.com.cn/

阅读(1038) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~