红联Linux门户
Linux帮助

HPUX核心参数说明

发布时间:2006-08-11 09:25:28来源:红联作者:ming
acctresume 和 acctsuspend
只在启用 HP-UX 统计时使用。这些变量是统计日志文件所在文件系统(缺省情况下为/var/adm)的百分比。在文件系统自
由空间降到acctsuspend指定的百分比(绝对百分比)时,即终止统计;只有达到分配给acctresume的百分比时才能恢
复。
例如:
acctsuspend 分配 0 (假定缺省的文件系统值)- 当自由空间低于minfree(缺省情况下为10%,在bdf输出中文件系统将显
示100%使用)时,统计将被终止。如果acctresume为80,当文件系统的利用率降到80%时(bdf显示),就会再次启用统
计。重新启用统计后,就会产生“Accounting resumed”信息。
欲了解其它信息,请参考/usr/share/doc/doc_map.txt中所列的统计白皮书以及统计帮助信息。
bufpages
这个值以前用于定义为文件系统IO中使用的高速缓冲区分配的物理内存量(以4096字节页面为单位)。
以前的HP-UX版本一般将 10% 的物理内存用于此任务,但是最近的版本已实现了内存的动态分配。在10.X版中,如果
bufpages是一个非零值,它就成为高速缓冲区可用内存页面的最大值,实质变成一个限制,尽管可能很少使用,但不会超过这个值。在10.X版中,bufpages经常设为0,它表示请求动态高速缓冲区,dbc_min_pct 和 dbc_max_pct参数将设置一个高速缓冲区允许的可用内存的最小和最大百分比。
在9.X版中,高速缓冲区的内存用bufpages变量明确确定。如果/etc/conf/dfile (700系列)或/etc/conf/gen/S800(800系列)中缺少了这个变量,高速缓冲区就被设为可用内存的10%;否则该值以页面(4096字节)数填入。
create_fastlinks
允许在HFS文件系统内创建高速符号链接。版本注释中应当包含有关的附加信息。从根本上来说,高速符号链接减少了磁盘
块访问,从而略微减少磁盘IO。
* 注:在10.0以前的800系统或9.0以前的700系统上没有这个变量。
dbc_max_pct 和 dbc_min_pct
这两个变量定义缓冲文件系统页(也叫做高速缓冲区)可用的内存百分比范围。适当取值一般可以产生以下效果:
- 低于或等于 95% 的读缓冲命中率- 低于或等于 70% 的写缓冲命中率
用sar -b 5 5 (分别为%rcache 和 %wcache)可以对该值进行监视。也许可以保证减少读缓冲命中。
为高速缓冲分配过多内存的另一个现象可能是用户响应时间中无法解释的偶然或间歇性停顿。 dbc_min_pct的缺省值是5,
dbc_max_pct的缺省值是50。在许多情况下,建议为高速缓冲区分配200mb或更少的内存空间。Dbc_max_pct是机器上一个
主要的减少对象,在其中可以观察到内存压力,以及刚才所描述的停顿。
default_disk_ir
磁盘即时报告。这个变量确定 write()系统调用是否等待数据实际写入磁盘,或者只是写入磁盘缓存。缺省的动作是禁
止,表示write()将写入磁盘而不是磁盘缓存。版本注释中提供了有关的附加信息。
fs_async
允许异步文件系统写操作。尽管在部分情况下这可能会提高文件系统的性能,但文件系统的损坏窗口更大,建议采用其它
的保证数据完整性的方法。请小心改变此变量,这个变量只与文件系统有关,与原始磁盘设备或原始lvols无关。
maxdsiz、maxssiz和maxtsiz
这些参数是所有HP-UX 用户进程的三个基本的组成部分(数据、堆栈和文本段)。数据段的最大尺寸是1.9 GB,但这个值
要求用EXEC_MAGIC编译和链接可执行代码(详情请参考ld(1)帮助选项-N 和版本注释)。EXEC_MAGIC剔除了几个进程共享
代码的同一个内存映像的能力。没有EXEC_MAGIC,maxdsiz的最大值大约为966 MB。如果每个进程的数据段(maxdsiz)超
过这个值,则二进制代码必须至少用ld(1)重新链接或按EXEC_MAGIC的设置重新编译。附加的详细信息参见 ld(1)和当前
版本的版本注释。
注:10.10版增强了 EXEC_MAGIC,使文本映像可以在多个进程之间共享。详情请参考帮助信息和版本注释。
maxfiles & maxfiles_lim
这个变量与进程一次可以打开的最大文件数的软件、硬限制有关,maxfiles的缺省值是60,但由于所有的交互进程都打开stdin、stdout
和stderr,因此通常只能再打开57个文件。非根系统进程(uid > 0)可以将软限制增加到maxfiles_lim硬限制,但只能通
过应用setrlimit(2)系统调用来实现,否则,增加软限制的唯一方法就是改变maxfiles的值。
maxswapchunks
这个值与可用于分配的 swapchunks (swchunk)数有关。由于交换空间以swapchunks分配,此变量必须足够大,以访问所
有的交换空间,缺省值256允许分配大约525 MB的交换空间。如果这个值对于已配置的交换空间过小,则无法得到的交换空
间一般标记为保留,不能访问,这样就限制了交换空间和总的虚拟内存。这个变量的代价就内存而言并不重要。将
maxswapchunks设为1024和2048将使内核可以寻址比大部分配置的要求大得多的交换区域。
maxuprc
此值确定一个用户标识能够产生的进程数,这对于每个UID都是一个限制因素,而不管登录的数量有多少。较大的maxuprc
值可以产生一个环境,在这个环境中,由于杂乱进程的大量产生,失控的用户进程消耗大量的处理器时间。它还可能影响
其它的内心变量,导致机器的吞吐率降低。建议增加此变量的值时一定要小心。
maxusers
与一些人的看法相反,这个变量与允许登录到HP-UX的用户数毫无关系,这个变量的主要功能与maxuprc类似 - 更大数量核
心公司的输入变量,通常不需要改变这个变量。明智的做法是将注意力集中在需要修改的具体核心资源上。
maxvgs
这个参数是指在当前的内核配置下可配置的最大卷组数,缺省值是10。如果vgcreate返回无法打开vg组文件的信息,应检
查新卷组组文件的副编号。如果卷组副编号是0x0a0000或更大,则maxvgs的缺省值将返回一个错误。
nbuf
这个参数正在过时。目前,这个值主要在300/400系列平台上使用,用于配置高速缓冲区。它与bufpages一起使用 - 每两
个bufpages一个nbuf。如果在700或800系列机器上使用,一般会在/etc/dmesg或syslog中出现错误,显示nbufs数被调
整。对于使用HP-UX 9.0或更高版本的700/800系列机器,不建议用这个参数代替bufpages、dbc_max_pct或dbc_min_pct
。如果nbuf被从核心变量列表中完全移走,那么将来持续使用可能会导致出现错误。
ncallout
任意时间内核可以调度的最大超时数。进程数越高,每个进程多个超时的可能性越高,这个值的配置就应当越高。缺省值
是公式 (16+NPROC)。
netmemmax
IP 数据包重新分段组合内存。值-1 表示除了物理内存没有限制,而0则限制为10%,大于0的值指定可能接近最近页面边界
的物理内存量,这个内存不保留,只根据需要进行分配。对这个变量的调整就是在用户内存和内核网络内存之间进行平
衡,可能需要做一些实验才能找到最优值。
nfile
系统上运行的所有进程打开的文件数。尽管每个登录项相对都比较小,在对这个表进行管理时仍会有一些内核开销。此
外,每次打开文件时,在nfile中都会消耗一个登录项,即使该文件已被另外一个进程打开。当nfile登录项用光时,就会
出现一个控制台和/或syslog错误信息,明确说明“File table full”。
在大型系统的使用中,我们会遇到这样的错误,由于系统报错table full error而引起了oracle数据库宕机。这种错误的引起是由于nfile值太小的缘故。
看看hpdoc的解释:nfile defines the maximum number of files that can be open simultaneously, system-wide, at any given time.
乍看似乎是我们看得见的文件打开数,其实不是,看得见的是nofile参数来管理的。
It is the number of slots in the file descriptor table. Be generous with this number because the required memory is minimal, and not having enough slots restricts system processing capacity.
nfile缺省值的计算公式如下:((16*(Nproc+16+MaxUsers)/10)+32+2*(Npty+Nstrpty)
那么这个值应该设置成多大呢?
优先考虑根据sar -v的结果来看,适当增加。观察一周左右,用lsof
nflocks
系统内文件锁的数量。与nfile类似,每个锁都会得到一个登录项,内存的花费也非常小,每个nflock登录项使用的内存很
少。
ninode
这个臭名昭著的变量过于庞大,可以对处理器产生过重的负担(特别是采用多CPU的机器)。对这个表没有有效的统计,因
此实际的消耗很难监视,最好的方法就是不增加它的值,除非收到控制台/syslog信息,明确规定“Inode table is
full”,否则启动一段时间后,看起来该表就几乎或完全充满。
与 nfile不同,每次打开文件时,ninode中只消耗一个登录项。通常nfile和ninode之间没有直接的关联。此外,过高的
值实际可能导致高可用集群出现网络超时的情况,经常是在备份例程启动时。很少有系统真正需要5,000 个以上的登录
项。如果这个变量很大,散列一个登录项的初始等待时间就非常大,以便能够首先快速打开文件。
由于没有有效的统计,确定这个表中有哪些内容的唯一方法就是顺序搜索,这对处理时间的消耗非常大。当处理器“走
过”这个表时,很少执行其它的活动。建议此表稍微小一些,只有在收到inode表已满的信息时才增加它的值,此时我们建
议增加 10-20%。
DNLC
这个参数不是直接可调,但操作与 ninode类似。它是目录名查找缓冲,用于目录名而不是文件,是maxusers影响的参数之
一。如果内核方案失败,这个变量一般就采用ninode的值。该值设置得很大时,其结果与ninode相似。检查这个变量的最
简单的方法是用glance -t命令,然后检查第二页,它包含ninode和DNLC。sar不能检查这个值。同样,此表中不保留长文
件名(大于14个字符) ,每次引用该表时,都必须全部解释。
no_lvm_disks
这个变量通知内核检查 LVM 磁盘。当该变量被设为1时,不进行任何检查。
nproc
这是maxusers/maxuprc的杂乱设置所影响的另外一个变量,它与系统内的进程数有关,经常在运行ps -ef时,或者使用Glance/GPM
和类似的命令时引用。该值通常应当比为非预期的进程增加预留的最大进程数大10-20%。
shmmax
这是每个共享内存段的最大字节值。在大部分情况下这个最大值是1 GB。PHKL_8327或其之后的换代产品将允许系统内所有
共享段的累积总和,最大值达到2.75 GB,而每个段仍保持1GB的限制。
swapmem_on
这个值允许为进程释放/还原分配内存,通常在swapinfo命令下可以观察到,显示为内存,尽管伪交换的缺省优先级是12,
但内存开始时用于无效的进程,主要结果是I/O减少,因为无效的进程不必迁移到磁盘交换区域或文件系统上。
如果内存压力增加,需要更多的内存页,那么无效的进程就会被移到交换区域。用swapinfo -atm观察正在使用的交换区域
没有什么害处。内存压力可以用vmstat命令进行观察,如果swapinfo显示设备保留行减少、而设备PCT USED栏相应增加,
也可以验证这一点。

swapmem_on的作用


经验之谈:如果小型机配置的内存比较大,那么建议将swapmem_on置为1。其作用是打开pseudo-swap(伪交换区)功能。如果swapmem_on的值为0,表明没有打开pseudo-swap(伪交换区)功能。

以下的内容将会牵涉到两个概念:
1. 交换区(swap)
2. 伪交换区(pseudo-swap)
如果对这两个概念不清楚,可以去查找相关资料。这里就不详细说明了。

在HP-UX中,有两个后台守护进程对交换区(swap)进行管理,这两个守护进程就是vhand和swapper。
简单来说,vhand这个进程会监控内存的使用状况,当内存的值低于一个叫做lossfree的临界值的时候,vhand进程就会开始工作。它会将最近没有访问过的内存页面调度到交换区(swap)中,这就是有名的page-out。
当系统的应用对内存的要求很高的时候,这就可能会产生一个问题:vhand进程可能会经常作page-out的动作,如果太频繁了,就会影响系统的性能。这个因为频繁page-out产生的性能大幅度下降的现象,叫做thrashing----此时可以考虑增加内存来提高系统的性能。
而swapper这个守护进程是在系统发生thrashing时或内存的值低于另外一个叫做minfree的临界值的时候被激活的。此时swapper会将一些进程置为非激活的状态,来降低系统的繁忙度。当swapper监控到内存的值在minfree之上或系统没有发生thrashing时,系统才会重新激活那些非激活的进程。

而实际应用当中。用户的系统可能会遇到这样的情况:系统要运行一个程序,而这个程序需要内存的大小为10M,此时,内存剩余30M,而swap空间剩下5M,那么该程序会在这个时候启动吗?答案是不会启动。因为系统发现swap小于程序需要的内存大小,虽然这个时候有足够的内存,程序仍然不会启动。
因此,为了解决这样的问题,就有了伪交换区(pseudo-swap)的概念。那么伪交换区(pseudo-swap)的大小是如何计算的呢?以下是一个伪交换区(pseudo-swap)最大值的计算公式:
伪交换区(pseudo-swap)=交换区(swap)+(3*内存大小/4)
这样,系统要启动一个程序,就会察看内存的大小和伪交换区(pseudo-swap)的大小,由这个公式可以知道,伪交换区(pseudo-swap)始终是大于内存的大小的。只要有足够的内存,程序就会启动。这就避免了以上尴尬的情况。
而实际上,伪交换区(pseudo-swap)其实并没有占用任何硬盘的空间,它仅仅是计算出来的“伪空间”。

回到最初的经验之谈,为什么对于大内存的系统来说,建议设置swapmem_on为1呢?因为根据经验来说,swap一般会设定为内存的2倍。而对于现在很多系统来多,都配置了8G、16G的大内存,那么此时要分配32G的swap空间?此时,一般都会swap的大小等同于内存的大小。此时,打开伪交换区(pseudo-swap)的功能,就非常有必要了。

timeslice
这个值与优先级降低和处理器暂时损失之前每个进程能够消耗的时间分段信号数有关。一般地,改变这个参数利害此消彼
长,在大部分情况下不建议进行修改,也没有必要修改。
文章评论

共有 0 条评论