SCO UNIX核心参数的调整




【摘要】本文介绍了SCO UNIX操作系统中几个核心参数调整的一般原则及如何根据系统的实际运行状况进行核心参数的调整。
【关键词】SCO UNIX 核心参数

SCO UNIX的核心参数的配置对系统的性能有很大的影响。本文周详介绍了SCO UNIX操作系统中对系统性能有较大影响的核心参数配置的一般原则。除此之外,精确调整核心参数还需要有关应用程式的知识。

一、I/O子系统的调整

因为磁盘I/O相对于内存访问速度较慢,所以I/O子系统核心参数的调整对整个SCO UNIX的性能有很大的影响。

1、文档,I节点和锁

NINOD和NFILE

NINODE和NFILE分别决定I节点表和文档表的大小。为了确定适当的NINODE和NFILE的值,能够用sar -v命令来查看等间隔时间内正在使用的I节点和打开文档的平均数。例如:

# sar -v
scsibox scsibox 3.2 2 i386 10/05/92
00:00:01 proc-sz ov inod-sz ov file-sz ov lock-sz
01:00:01 57/100 0 191/300 0 190/300 0 2/100 <-- 第一个时间间隔
02:00:01 57/100 0 191/300 0 190/300 0 2/100 <-- 第二个时间间隔
03:00:01 60/100 0 194/300 0 194/300 0 2/100 <-- 第三个时间间隔
^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | |
| NPROC | NINODE | NFILE | FLCKREC
| | | |
进程 inodes 已打开 已加锁的
平均 的平均 文档的 文档记录
数目 数目 平均数 的平均数

另一方面也可使用如下命令查看某一时刻的I节点和打开的文档数:
# pstat | egrep '^[0-9]'
165 active inodes
51 processes
171 open files

通过以上两种方法确定系统在峰值时刻的最大inode和打开文档数目,然后根据系统峰值时的I节点和打开文档数加上20%到25%的冗余量来配置系统的NINODE和NFILE的值。

NOFILES和FLCKREC

NOFILES决定了用户文档描述表的大小,他确定了单个进程在任何时刻可同时打开文档的数量。由于NOFILES的缺省值很大,因此一般无需修改NOFILES的值。只有在使用数据库的时候可能需要修改NOFILES的值。
一般来说操作系统有能力锁住某个文档,这样其他用户或进程就不可能再打开这个文档。除了对文档加锁以外,操作系统还能够对文档的记录进行加锁,文档的记录能够是个字符,也能够是文档中的任何字符。
FLCKREC参数确定在系统范围内多少记录能够被加锁。要为FLCKREC赋一个合适的值,能够用“sar -v”命令提供的输出信息来确定。同NINODE、NFILE相同,根据“sar -v”命令提供的信息,加上20%到25%的冗余量来确定FLCKREC的值。若FLCKREC配置的太低,系统会出现错误信息提示文档锁表溢出。

2、NAMEI缓冲区

在动手调整NAMEI参数之前,很有必要了解配置NAMEI缓冲区的目的。在解释配置缓冲区的目的之前,先介绍一下在SCO UNIX操作系统下文档是如何打开的。举例来说,当我们要打开 “/usr/tmp/my_directory/my_file”文档时,操作系统所要做的第一件事就是将输入的字符串分裂成各个组成部分,也就是分裂成“usr”、“tmp”、“my_directory”和“my_file”。“my_file”是个文档,“usr”、“tmp”、“my_directory”和“my_file”是目录,但在UNIX 操作系统中,一个目录实际上也是个文档,因此,“usr”、“tmp”、“my_directory”也都是文档,在这些目录文档中包含有目录中任何文档的文档名和I节点数。
当操作系统将文档名分裂成一个一个的组成部分以后,就开始逐个处理文档名的组成部分。操作系统首先在根目录下寻找“usr”文档,找到后提取出“usr”的I节点数,根据I节点数读取磁盘,即将“usr”目录中的内容读入内存中,在此内容中定位下一个组成部分:“tmp”。一旦找到“tmp”,提取出相应的I节点数、根据I节点数从磁盘读取“tmp”的内容之后,操作系统对“my_directory”进行同样的操作。最后,操作系统定位到“my_file”,找到此文档的I节点数,然后打开文档。
打开文档的处理过程,因为涉及到多次的读盘操作,所以是很费时的,因此要想办法减少任何多余的I/O操作。
UNIX的设计者早已注意到某些目录和文档的使用频率较高,NAMEI缓冲区通过对这些目录和目录的组成部分进行缓冲来提高系统的性能。这样打开这些文档时就无需再访问硬盘,读取文档的速度大幅度提高。

S5CACHEENTS(System V Cache Entries)

为了介绍的方便,NAMEI缓冲区中的每一项称之为“NAMEI缓冲项”,在整个系统中存在一定数目的NAMEI缓冲项。正在使用的NAMEI缓冲项通过链接的方式组成链表,如下所示:

NAMEI缓冲项的总数由
S5CACHEENTS决定。
此例中S5CACHEENTS=28

图一

还未被使用的NAMEI缓冲项保存在缓冲池中。当需要对一个新的组成项进行缓冲时,NAMEI缓冲算法就从缓冲池中分配一个缓冲项,最终缓冲池中的任何缓冲项都有可能被用尽,如图一所示。

S5HASHQS

图一说明了NAMEI缓冲项被组织成链表的形式。为了快速地访问链表中的任意一个NAMEI缓冲项,核心使用了散列表。散列表的大小由S5HASHQS决定。NAMEI缓冲项和散列表之间的关系可用下图说明:
NAMEI缓冲区的总数由S5CACHEENTS
决定。此例中S5CACHEENTS=28

散列表的大小由5HASHQS
决定。此例中S5HASHQS=7

图二

调整系统参数和走平衡木类似,需要我们在复杂的条件下寻求某种平衡。在调整上述核心参数时以下几条原则可供参考:
* 当增加S5CACHEENTS的数值时,也就增大了给定文档的组成部分在NAMEI缓冲区的概率。因为缓冲区越大,也就能缓冲更多的文档组成部分。
* 当增加S5HASHQS时,链表的平均长度减少。假如文档的组成项在链表中,则访问速度更快。
虽然散列函数能够完全确定某一文档组成项应在散列表的那一队列中,但这并不意味着这一文档组成项就一定在NAMEI缓冲区中,而只是告诉我们假如这一文档组成项在NAMEI缓冲区中,那末就一定在这一链表中。当文档组成部分不在缓冲区时,就需要对此进行缓冲。
下面我们进一步讨论一下S5CACHEENTS参数的配置。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!