AS400性能调优
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简要介绍:线程的概念早就引入iSeries及AS/400系统,尽管RPG支持线程,但过去一般的RPG程序员很少或干脆不去应用线程技术,因此早期多线程的应用一般很少。这导致一般OS/400子系统(例QBATCH、QINTER、MYOWNSUBSYSTEM)的系统管理员,不必去考虑作业(Job)与线程(Thread)的区别。
介绍:线程的概念早就引入iSeries及AS/400系统,尽管RPG支持线程,但过去一般的RPG程序员很少或干脆不去应用线程技术,因此早期多线程的应用一般很少。这导致一般OS/400子系统(例QBATCH、QINTER、MYOWNSUBSYSTEM)的系统管理员,不必去考虑作业(Job)与线程(Thread)的区别。
但是随着Java、Domino等应用在iSeries 及 AS/400上的大量出现,此类应用一般在一个作业中含几个几十个的线程,此时系统管理员对作业和性能的考虑角度就应该适应线程的特殊性,否则会严重影响系统性能。
本文将对相关的参数进行介绍,对系统的影响并提供相应的建议。
涉及上述问题的系统参数主要有二个:MAXACT 和MAXJOBS。
在每个完整的子系统内,至少含有一个或多个内存池定义,每个内存池有一个单独的名字(例*BASE,*SHRPOOL1等)及编码。当子系统启动时,如果该内存池没有被其它活动子系统调用,则当前子系统会激活内存池并实际去申请所定义的物理内存,供子系统中运行的作业使用。在子系统中含有一个非常重要的参数--MAXACT,不管有多少子系统共享该内存池,在此内存池运行的线程数(不是作业)不能超过MAXACT。
而对每个子系统属性又有一个参数--MAXJOBS,此值限制在该子系统中运行的最大作业数,注意这里指的是作业而不是线程。每个子系统中又有一个或多个JOBQ定义,在每个对应的JOBQ定义中,系统又提供一个参数控制运行的作业数,不幸的是,由于历史的原因,该参数名字是MAXACT,而不是MAXJOBS,此处的MAXACT指的是作业,而不是线程,与内存池的定义不同。
这样,一般用户很容易利用内存池的MAXACT参数来错误地控制作业数,而实际上此处的MAXACT所指的最大活动数应该是线程,没有意识到作业、线程的区别,导致该值设置较小,系统可能产生下列现象:
1)、Java 应用程序莫名其妙失败,当MAXACT的值很小,甚至为1时,Java程序就无法运行,且系统极有可能没有相关的出错提示信息。
2)、系统非常慢,但同时CPU利用率有很低,大量作业处于“Ineligible"状态。用户可以用WRKSYSSTS,就可能发现Act->;Inel值不是零。
Work with System Status ---------------------------------------S104GAAM
------------------------------------------------------06/10/03 08:50:17
% CPU used . . . . . . . : ------.7 System ASP . . . . . . .: --34.36 G
Elapsed t
ime . . . . . . : 00:00:01 % system ASP used . . . : - 26.5334
Jobs in system . . . . . : --- 2661 Total aux stg . . . . . : - 34.36 G
% perm addresses . . . . : --- .007 Current unprotect used .: --- 824 M
% temp addresses . . . . : --- .009 Maximum unprotect . . . : ----882 M
Sys ---Pool -Reserved - Max ----DB----- --Non-DB--- -Act- Wait- Act-
Pool -Size M Size M --- Act Fault Pages Fault Pages -Wait Inel Inel
---1 --86.94 --49.17 -+++++ ---.0 ---.0 --3.3 --3.3 ---.0 --.0 --.0
---2 -394.34 ----.38 ----43 ---.0 ---.0 ---.0 ---.0 -50.6 --.0 -4.0
---3 ---5.11 ----.00 -----5 ---.0 ---.0 ---.0 ---.0 ---.0 --.0 --.0
---4 --25.59 ----.00 ----18 ---.0 ---.0 --6.7-- 6.7 -50.6 --.0 --.0
------------------------------------------------------------Bottom
===>;
F21=Select assistance level
一般,针对上述的现象,IBM推荐采用下列建议:
1、确保每个内存池的MAXACT的值足够大,如果同时用户利用MAXJOBS来控制子系统的活动作业数时,可以将内存池的MAXACT设为*NOMAX。
用CHGSHRPOOL来修改内存池的活动线程数:
CHGSHRPOOL ACTLVL(newmax)
2、用子系统参数 MAXJOB 控制自系统中同时活动的作业数:
CHGSBSD QBATCH MAXJOBS(newmax)
3、用子系统中的作业队列(JOBQ)定义进一步控制,从这作业队列中能同时进入该子系统中运行的作业数:
CHGJOBQE SBSD(QBATCH) JOBQ(QBATCH) MAXACT(新的最大作业数)