首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > 其他操作系统 > 针对线程的性能优化
【标  题】:针对线程的性能优化
【关键字】:
【来  源】:http://www.cublog.cn/u/646/showart.php?id=235648

针对线程的性能优化

针对线程的性能优化

 

 

提要

 

线程的概念早就引入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

--------------------------------------               -XXXXXXXX
------------------------------------------------------06/12/25 09:50:28
% CPU used . . . . . . . : ------.7 System ASP . . . . . . .: --34.36 G
Elapsed time . . . . . . : 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

 

一般,针对上述的现象,采用下列建议:

   1、确保每个内存池的MAXACT的值足够大,如果同时用户利用MAXJOBS来控制子系统的活动作业数时,可以将内存池的MAXACT设为*NOMAX。用CHGSHRPOOL来修改内存池的活动线程数:CHGSHRPOOL ACTLVL(newmax)

   2、用子系统参数 MAXJOB 控制自系统中同时活动的作业数:

CHGSBSD QBATCH MAXJOBS(newmax)

   3、用子系统中的作业队列(JOBQ)定义进一步控制,从这作业队列中能同时进入该子系统中运行的作业数:CHGJOBQE SBSD(QBATCH) JOBQ(QBATCH) MAXACT(新的最大作业数)

 

 

linux远程出现乱码,无法显示中文的解决方法:【上一篇】
AS/400主机现场验收、安装与调试:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 如何从pop3邮箱中取出邮件
  • 焦点
  • java中基类的初始化
  • 内存故障分析与解决
  • 一个 XLIFF 格式的文件
  • How to study C && ASM Code(3)
  • Freehand 制作金属弹簧(3)
  • js也搞事件 注入就是这么爽
  • Message Driven POJO
  • 今天无聊玩了玩BOSON模拟器6.0 B3
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.