再上一篇:4.2.2 控制 JES2 的处理过程
上一篇:4.2.3 SPOOL卷的配置、管理和性能
主页
下一篇:4.2.5 关于 JES2 的安全性
再下一篇:4.3 JES2 的日常操作
文章列表

4.2.4 检查点数据集的定义和配置

IBM S390 系统管理基础(zSeries,IBMSystemz, z/VM,zOS等操作系统使用,命令的参数与用法等)

JES2 中的检查点功能实际上分为两个部分:

1. 对作业和输出的备份,可以确保 JES2 的重启 。

2. 在 MAS 的系统结构中提供成员对成员的工作负载交流,确保 JES2 操作的高效率和 独立性。

根据用户所使用的 JES2 系统的配置不同,可以是单一的简单配置也可以是包含了 32
个成员的 MAS 的系统结构,检查点数据集将会在系统中发挥不同的作用。 检查点处理过程实际上就是定期地将成员系统中内存中的作业和输出队列中的内容复
制到检查点数据集当中,检查点数据集可以建立在 DASD 卷上,也可以建立在一些相关的 设备上。通过检查点处理可以确保成员在遇到软件或硬件错误不能够访问检查点数据集时不 会丢失内存中的作业和输出队列中的内容。由于在 MAS 环境中的各个成员之间采用的时松 散耦合的工作方式,每一个成员都在共同的作业和输出队列中选择作业进行处理,检查点处 理可以保证每一个成员都能够及时了解到当前队列中的状态信息,在一定程度上实现了成员 之间的通讯。
在一个单成员的环境中,检查点的功能仅仅作为对 JES2 管理的内存中的作业和输出队 列的一个备份。在一个 MAS 环境中检查点数据集不单单作为作业和输出数据集的备份,还 起到的了连接所有成员的作用。在这种情况下,检查点数据集作为成员活动的一个可访问的 仓库,可以保证成员之间的通讯和对当前工作负载的了解。检查点数据集中包含有成员记录, 用来描述整个 MAS 环境的配置和用来描述当前每一个成员的特定状态的信息。检查点功能 允许所有的成员对检查点数据集的读取和写入,也允许所有的成员根据从检查点数据集中读 取得信息更新自己内存中的作业。
接下来我们讨论如何通过初始化语句 CKPTDEF 定义检查点数据集。在语句中的

CKPT1=参数用来指定包含了 JES2 检查点信息的基本数据集,CKPT2=参数在 DUPLEX 模 式下用来指定 DUPLEX 数据集副本,在 DUAL 模式下用来指定辅助数据集。当检查点数据 集建立在 DASD 设备上,将以 SYS1.作为检查点数据集的前缀来标志检查点数据集,例如 SYS1.JESCKPT1 和 SYS1.JESCKPT2。可以通过 CKPTDEF 语句的参数 CKPT1=和 CKPT2= 的子参数 VOL 来指定存放检查点数据集的位置。如果检查点数据集建立在一些相关设备上 时,用户遍布需要为其制订一个卷。在这种方式下,检查点数据集被表示为 SYS1_CKPT1 和 SYS1_CKPT2。在初始化语句 CKPTDEF 中的参数 CKPT1=或 CKPT2=必须被指定,但不 需要指定数据集的缺省名、卷的序列号等信息。对于一个 MAS 的系统配置来说,合适的位 置对于 JES2 的性能是至关重要。

从前面所介绍的内容,我们知道检查点数据集对于 JES2 来说是一个关键的资源,因此 检查点数据集应该存放在一个高速的、低使用率的设备上。如果可能,对于每一个数据集来 说最好的解决方法是使用一个专用的 3390 设备。为了获得最好的系统性能,对于采用DUAL 配置模式的系统来说,CKPT1 和 CKPT2 两个数据集应该是它们各自拥有的 DASD 卷上的 为唯一数据集;对于采用 DUPLEX 配置模式的系统来说,通过 CKPT1 参数定义的数据集应 该建立在一个专用的卷上。我们建议将 CKPTn 数据集分别放在不同的卷上,这样可以保证 在系统发生问题时可以容易地恢复。
下面是一个用来配置检查点数据集的 JCL 样例:(关于 JCL 的内容,已在其它章节论述, 这里不再作进一步的讨论)

//ALLOCATE JOB (...),'PREPARE FOR JES2',MSGLEVEL=1

//ALLOCAT EXEC PGM=IEFBR14

//*

.

.

.

//*

//CHECK1 DD DSN=SYS1.JESCKPT1,UNIT=3380,

// VOLUME=SER=CHECK1,DISP=(NEW,KEEP),

// SPACE=(ABSTR,(45,15)),DCB=(DSORG=PSU)

//*

//CHECK2 DD DSN=SYS1.JESCKPT2,UNIT=3380,

// VOLUME=SER=CHECK2,DISP=(NEW,KEEP),

// SPACE=(TRK,13256),DCB=(DSORG=PSU)

/*

JES2 的初始化过程完成的另外一个重要工作就是确定检查点数据集的大小,保证检查 点数据集的使用和支持对未来可能的扩充。这里我们把这一过程分为两个步骤:

步骤1: 计算用来包含所有检查点数据的 4K 记录的所需数量。
步骤2: 根据计算出来的值确定需要的 DASD 设备的柱面数或相关设备的空间。 如果用户不愿意进行计算或不会计算的话,可以使用试凑的方法来确定。所谓试凑法就
是预先分配一块空间,然后通过 JES2 的消息$HASP296 或$HASP542 来判断所需的空间是 否合适。关于 JES2 的消息读者可以查阅相关的手册。在 JES2 的初始化过程中通过消息

$HASP537 显示在检查点数据集中的 4K 记录的数量。通过$D CKPTSPACE 命令用户可以 查看当前检查点数据的大小以及在检查点数据集中的空闲空间。通过$D ACTIVATE 命令可 以查看$ACTIVATE 命令是否被执行。

如果系统中的检查点数据集需要更多的空间,用户可以通过检查点重置对话将检查点数
据移动到更大的数据集中,也可以通过$T CKPTSPACE BERTNUM=命令增加为检查点数据 的扩展所保留的空间。
那么如何确定所需的4K 记录的数量呢?这个值是根据用户在初始化语句的参数中所指 定的值计算出来的,影响检查点数据集大小的初始化参数有:

参数

描述

缺省值

SPOOLDEF SPOOLNUM=

SPOOL 卷的数量

32

SPOOLDEF TGSPACE=(MAX=

SPOOL 上磁道组的数量

16288

JOBDEF JOBNUM=

作业队列的大小

1000

OUTDEF JOENUM=

作业输出队列的大小

2.5 x JOBNUM

CKPTDEF LOGSIZE=

检查点上修改日志的大小

1(如果MODE=DUPLEX)

1~9(如果MODE=DUAL)

CKPTSPACE BERTNUM=

BERT(Block Extension Reuse

Table)的大小

2 x JOBNUM + 100

我们通过下表来计算系统中每一个检查点数据集所需的 4K 记录的数量,这里我们假设
用户已经运行$ACTIVATE 命令并且提供了一个限度用以支持因进位所造成的误差。

检查点信息

公式或假定(所有的小数都进位)

4K 记录数

固定

Master, SCQ, JIX, RSO, LCK, DAS, Misc.

85

修改日志

CKPTDEF LOGSIZE =

磁道组

(SPOOLDEF TGSPACE=MAX= ) / 16288

作业队列(JQEs, JQX)

(JOBDEF JOBNUM= ) / 31 + (JOBNUM * (SPOOLDEF SPOOLNUM=)) / 32K)

输出队列

(OUTDEF JOENUM= ) / 37

扩展块(BERTs)

(CKPTSPACE BERTNUM=nnnnnn ) / 64

总计

为了能够使用户理解计算的过程,下面我们通过一个例子进一步地描述整个计算的方
法。以下的例子假设 JES2 的初始化参数为:

CKPTDEF LOGSIZE=8

SPOOLDEF SPOOLNUM=32

SPOOLDEF TGSPACE=(MAX=97728) JOBDEF JOBNUM=2000

OUTDEF JOENUM=5000

CKPTSPACE 没有被指定(BERTNUM 的缺省值为 2 * JOBNUM + 100)

检查点信息

公式或假定(所有的小数都进位)

4K 记录数

固定

Master, SCQ, JIX, RSO, LCK, DAS, Misc.

85

修改日志

8

8

磁道组

97728 / 16288

6

作业队列(JQEs, JQX)

2000 / 31 + 2000 x 32 / 32K = 65 + 2

67

输出队列

5000 / 37

136

扩展块(BERTs)

2 x 2000 / 64

125

总计

426