IBM Support

IBM i 7.1:超出自身CPU或临时存储空间限制的作业将被挂起

Technical Blog Post


Abstract

IBM i 7.1:超出自身CPU或临时存储空间限制的作业将被挂起

Body

IBM i 7.1:超出自身CPU或临时存储空间限制的作业将被挂起


工作管理项目团队最近发布了一个7.1上的PTF - SI42845,它改变了IBM i管理那些超出CPU最大处理时间或者最大临时存储空间限制的作业的方式。

IBM i中,*CLS对象定义了一系列关于作业处理的属性。子系统描述里定义的路由规则用来判断当一个作业初始化的时候用到哪个*CLS的对象。*CLS对象中有两个缺省值为无限大的作业处理的属性:最大CPU处理时间(CPUTIME)和最大可用临时空间(MAXTMPSTG)。在这个PTF发布之前,如果这两个属性中设置了上限,而有其中任意一个超出了上限,该作业将被终止。如果超出最大CPU处理时间,作业异常终止(错误码CPC1218);如果超出允许的最大可用临时空间,作业异常终止(错误码CPC1217)。这两条错误信息告诉你,作业是由于超出最大CPU处理时间还是最大可用临时空间限制而被异常终止。

当系统想要强行终止作业的时候,其实它并不清楚作业是否已经接近完成。很有可能再给一点点CPU时间或者临时存储空间,作业即可正常完成。由于很难预测作业完成需要的CPU时间和临时存储空间,而且作业超出这两条限制又将被强行结束,很多客户只是简单地将这两个值设成无限大(缺省值)。

上述那个近期发布的PTF改变了这一现状,当作业超出了CPU最大处理时间或者最大可用临时空间,系统不会强行结束该作业而是将其挂起。当系统中的一个作业因为超出这两个限制值而被挂起的时候,下列消息将被发送到系统操作员(QSYSOPR)的消息队列:

    CPI112D Job held by the system, CPUTIME limit exceeded

    CPI112E Job held by the system, MAXTMPSTG limit exceeded

这一修改允许系统操作员决定是终止作业还是允许其继续运行至正常结束。

如果你想让作业继续运行,你需要调整这两个限制的最大值,并且通过使用释放作业(RLSJOB)命令让其继续运行(作业如果超出最大值是释放不了的)。你可以通过修改作业属性命令和修改作业属性的API来改这两个限制值。

修改作业属性(CHGJOB)命令多了两个新参数:

    最大CPU时间(CPUTIME):最大CPU时间参数定义了作业可占用的最大CPU处理时间(以毫秒为单位)。如果超出该限制,作业将被挂起。

    最大临时存储空间 (MAXTMPSTG): 最大临时存储空间定义了作业可占用的最大的临时存储空间(以兆为单位)。该临时存储空间用来存放作业本身运行需要的存储以及作业运行时隐式创建的系统对象。(不包括QTEMP里存储的对象)如果超出该最大值,作业将被挂起。

修改作业属性APIQWTCHGJB)支持两个格式为JOBC0100JOBC0200的新键值,

    允许占用最大CPU时间, 以毫秒为单位 (1302)

    允许占用最大临时存储空间, 以兆为单位 (1305)

PTF使你更容易地防止作业因超出占用最大CPU时间或最大临时存储空间而异常终止。把这两个限制值设置成大于任一作业可能使用的最大值,你就可以防止系统因为作业异常终止而造成的负面效应。由于作业将被挂起而不是强行终止,这个限制值不必设置的十分精确。如果有作业达到任意一个最大值,你可以使用修改作业命令或者修改作业的API将最大值调得更大,从而允许作业继续运行。如果再次超限,系统将再次挂起该作业。

有了该PTF,用户可以把默认值(无限大)设置成更合适的值。

尤其是可以设置作业可占用最大临时存储空间,通过在*CLS对象重设置该值(但要确保最大值低于系统可用的最大存储空间),你就可以避免因为最大可占用临时存储空间过大而造成的系统宕机。由于现在系统将挂起而不是终止超限的作业,你可以更好地对该作业进行评估和判断,以便对下一步做出最佳的选择。

我要谢谢IBM i工作管理项目开发团队的Dan Tarara帮助我完成了这篇文章。

 

作者:Zhao Yao (赵耀) TitleSoftware Engineer

原作者:May, Dawn M.  TitleSoftware Architect: Domain Knowledge System I

[{"Business Unit":{"code":"BU009","label":"Systems - Cognitive"}, "Product":{"code":"SWG60","label":"IBM i"},"Component":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"","Edition":""}]

UID

ibm11146028