Informix系统性能的优化
- 格式:doc
- 大小:427.50 KB
- 文档页数:31
Informix系统性能的优化接下来,讲述与系统性能关系比较紧密的几点
1 Solaris系统参数的设置
因为在不同informix版本下,Solaris内核参数的设置可能不同,建议从当前安装版本的informix目录下类似于release/en_us/0333/IDS_7.3的文件中获取相关信息。
在主备机上分别用root身份登录后,编辑/etc/system文件调整系统参数,确保system 文件中存在以下内容:
2 Informix数据库参数的设置
3 ONCONFIG配置参数说明
ONCONFIG文件中对性能有影响的参数主要有:
CLEANERS:Page Cleaner 线程的数目
RESIDENT: 驻留段是否常驻物理内存
MULTIPROSESSOR: 指示单/多处理器
AFF_NPROCS/AFF_SPROC: 将CPU VPC与物理处理器进行绑定
NUMCPUVPS: CPU VPS的个数
SINGLE_CPU_VP: CPU VPS是否一个
NOAGE: 提高CPU VPS的运行机会
LRUS:LRU 队列的个数
LRU_MAX_DIRTY/LRU_MIN_DIRTY:启动和终止Page Cleaner线程的脏页面的比例CKPTINTVL:执行检查点操作的时间间隔
PA_PAGES/PA_THRESHOLD:前读页数目与时机
注释:
对应于每一个SERVER,都有一个ONCONFIG配置文件与之对应.ONCONFIG配置文件记录了Informix的一个实例的所有配置参数,其中有一些参数的配置是否得当与性能关系密切.
3.1CLEANERS
制定系统中Page Cleaner线程的数目.
Page Cleaner是系统线程的和种,他的任务就是将系统缓冲区池(Buffer Pool)中被修改过的页面刷新到磁盘上,以使内存中的数据和磁盘上的数据保持一致.该参数的值最好是等同于有DBSpace在其上存储的活跃的磁盘数目:换言之,该参数决定于独立的I/O通道.
3.2RESIDENT
该参数用于指定是否要求共享内存中的可驻留部分(Resident Portion)必须驻留在物理内存中.
如果该值设置为Y,则要求其必须驻留在物理内存中;如果设置其值为N,则Resident Portion的页面可以被虚存管理系统换出到磁盘上.
将Resident Portion强制驻留在物理内存中的优点是可以提高对该部分内存区域访问的速度(访问命中率为100%),由于该部分是共享内存中最主要的一部分,所以这样做有利于系统性能的提高;
3.3MULTIPROSESSOR
指明服务器是单处理器还是多处理器.单处理器设置为0,多处理器设置为1.
3.4AFF_NPROCS/AFF_SPROC
当参数MULTIPROSESSOR设置为1,即Informix Dynamic Server系统运行在一个多处理器服务器上,我们可以利用操作系统支持的处理器和(Affinity)特性将CPU VPC(注:CPU VPS:最重要的一类虚拟处理器类,包含所有用户线程及部分系统线程,在该虚拟处理器类中不允许有阻塞性系统调用出现.)同某些处理器进行绑定.与CPU VPC绑定的处理器越多,CPU VPC中的线程所能获得的运行机会也就越多,该VPC的重要性也就越突出.
AFF_NPROCS用于指定服务器上将有几个处理器被用于CPU VPC进行绑定.该参数不能超过实际处理器的个数.如果该参数的值为0,则意味着CPU VPC被绑定在一个特写的处理器上.后一个参数AFF_SPROC用于指定服务器上从哪一个编号开始的那几个处理器将同CPU VPC进行绑定.处理器的编号从0开始.譬如,服务器上有四个处理器,它们分别编号0,1,2,3,如果AFF_NPROC的值为3而参数AFF_SPROC的值为0,则意味着编号0,1,2的三个处理将与CPU VPC进行绑定.
注意:进行正理绑定以后,CPU VPC中的所有线程就能在绑定的几个处理器这间自由迁移,而所有其它VPC中的所有线程都只能在剩余的处理器上运行.因此,在设置这两个参数时,至少要给其它VPC保留一个处理器以供其中的线程运行.
3.5NUMCPUVPS
指定系统中CPU VPC的个数.
如果服务器是一个单处理器或双处理器的机器,将该参数的值设为1,如果服务器的物理处理数较多,则可以多设几个CPU VPC,最好是物理处理器个娄减一.
注意:CPU VPC的数据不能多于系统中物理处理器的数目.
3.6SINGLE_CPU_VP
指示系统中的CPU VPC是否是一个,如果只有一个该参数设为1,否则设为0.
3.7NOAGE
在操作系统对进程进行调度时,如果某个进程在过去一段时间经常占用CPU,则操作系
统会降低它的优先级.将该参数设为1可屏蔽掉这一机制,使得操作系统在调度CPU VPC中的线程时不考虑其以前对CPU占用情况,从而使CPU VPC中的线程获得更多的运行机会.
3.8LRUS
该参数用于指定系统中LRU队列的个数.LRU是Least Recently Used(最近最少使用)的缩写.当系统中所有的缓冲区都分配完毕以后,如果又由新的页面被读入内存,就必须进行替换,将某个不太重要的缓冲区中的页面覆盖掉.Informix Dynamic Server系统采用的替换策略就是LRU,即认为”最近最少使用(被访问)”的页面是最不重要的,这样的页面将被覆盖掉.系统中采用LRU队列来实现这一策略,所有缓冲区被安置在某一个LRU队列中,队列中越靠近”头”上的缓冲区最近越少访问,一量某个缓冲区被访问后,就将其在队列中的位置向队列”尾”移动.系统中维护多条LRU队列,使得每条队列的长度缩短了;也有多个”头”可供选取进行替换,提高了系统的整体性能.
建议:一般的应用系统,对于多处理器的服务器来说,最好将LRU队列的数目设置为CPU VPC的数目;而对于单处理器或双处理器的服务器来说,可将LRU队列的数目设为3或4.特定的应用系统根据自己的应用特点设置该参数.
3.9LRU_MAX_DIRTY/LRU_MIN_DIRTY
缓冲区的页面被修改后,为避免过于频繁地启动I/O,并不立即刷新回磁盘.系统每隔一段固定的时间后,会执行一个检查点(Check Point)操作,将所有被修改而末刷新的页面全部刷新到磁盘上.在两次检查点操作之间,可能会有许多页面被修改但不被刷新,我们称之为脏页面(Dirty),这样的脏页面多了以后,可供用于替换的干净页面就少了,系统进行替换时的效率就可能下降.因此,当系统中的脏页面达到一定比例时,系统就会启动Page Cleaner线程,刷新一些页面,保证系统中有一定比例的干净页面.
LRU_MAX_DIRTY和LRU_MIN_DIRTY都是百分比,代表系统中脏页面在所有缓冲区中所占的比例.当系统中的脏页面的比例上升直至超过了参数LRU_MAX_DIRTY的值的时候,系统就会唤醒Page Cleaner线程,刷新脏页面;由于Page Cleaner线程的刷新工作,系统中的脏页面的比例又会回落,当系统中的脏页面的比例回落到参数LRU_MIN_DIRTY的值以下时,Page Cleaner线程又开始睡眠,直到下一次被唤醒或检查点操作.
但如果一次检查点过程很长,在此期间即使LRU的上下限都很低也不一定影响性能。