再上一篇:4.2.1 JES2的初始化
上一篇:4.2.2 控制 JES2 的处理过程
主页
下一篇:4.2.4 检查点数据集的定义和配置
再下一篇:4.2.5 关于 JES2 的安全性
文章列表

4.2.3 SPOOL卷的配置、管理和性能

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

SPOOL 实际上是所有输入的作业和 JES2 管理的系统输出(SYSOUT)的一个存储仓库。 JES2 必须包含一个用来保存 JES2 的数据和控制块的数据集 SYS1.HASPACE。这个数据集 的名字 SYS1.HASPACE 是 JES2 中的缺省名,如果用户愿意,可以在初始化语句 SPOOLDEF 的参数 DSNAME=中为它指定另外一个名字。为了讨论的方便,在本书中我们使用缺省的名 字来描述这个数据集,不再每次作特别的说明。JES2 要求SYS1.HASPACE 数据集必须位于 可以直接访问的卷上,如果是在一个 MAS 的系统结构中的话,这个卷必须能够被所有的成 员访问。

在 JES2 能够被初始化之前,必须首先在直接访问设备上为 SYS1.HASPACE 数据集分 配空间。SYS1.HASPACE 实际上是一个或一组数据集的名字。同时可以有 253 个卷被定义 为 SPOOL 卷,这些卷在 JES2 中是通过卷的序列号进行区别的。名字中的前四个或五个字 符可以在 SPOOLDEF 语句的 VOLUME=参数中定义,第五或第六个字符可以为卷的序列号 所支持的任何字符用来区别不同的卷。任何一个卷,如果卷的序列号的前四个或五个字符与 SPOOLDEF 语句的 VOLUME=参数中定义的相同,我们便假设这个卷为一个 SPOOL 卷, 应该包含有一个 SYS1.HASPACE 数据集。如果在这个卷上没有 SYS1.HASPACE 数据集, 则会收到消息$HASP414 并且这个卷不会被作为 SPOOL 卷。
在 JES2 和 MVS 系统中可能会支持多种型号的直接访问设备,有些时候用户所使用的 设备的型号可能是混合的,既有这种设备又有那种设备。SPOOL 卷是支持多种设备的组合 使用。也就是说,我们可以使用如一个 3390-2、一个 3390-3 和几个各种模式 3380 型号的 DASD 设备的组合来作 SPOOL 卷。JES2 在使用 SPOOL 卷是不是一个一个使用的,而是同 时使用所有的 SPOOL 卷上的空间,在这些 SPOOL 卷上建立一种使用上的平衡,保证了所 有的 SPOOL 卷的负载相同,响应的效率也相同,这一点对于系统来说是非常重要的。位于 MAS 环境中的所有成员必须拥有至少一条连接包含了 SPOOL 和检查点数据卷的设备的通 道,以保证所有成员对这些数据的访问。同时,我们建议在分配 SPOOL 卷时,应该将整个 卷分配作为 SPOOL 卷。将一个卷上的一部分空间作为 SPOOL 空间,另一部分空间用作他 用是一种极不好方法。这样可能导致对SPOOL 卷访问的效率降低,而SPOOL 数据又是JES2 的关键数据。
另外我们在分配空间时,应该为 SPOOL 数据集分配一个连续的存储空间。如果为

SPOOL 数据集分配了两块分别连续的存储空间的话,JES2 将仅使用第一块空间作为SPOOL 空间。JES2 是以磁道组作为单位来分配空间的,一个磁道组中的磁道数是通过下面这个公 式得到的:

每个磁道组的磁道数 = SPOOLDEF 语句中的 TGSIZE / 每磁道的缓冲区数

(其中 TGSIZE 定义了磁道组中的缓冲区数)

我们可以采用很多种可用的空间定义来定义所使用的 SPOOL 空间,但在定义时应该考 虑以下方面的问题。
$ 为了减少不可用的 DASD 空间,应该将 SPOOL 定义在连续的空间内,因为 JES2
只使用 SPOOL 数据集的空间中的第一个连续空间。
$ 所分配的 SPOOL 空间应该大于等于磁道组中的磁道数。
$ 使用 TRK (track)进行空间分配将比使用 CYL (cylinder)进行空间分配节约 DASD
空间。
下面是一段用来定义和分配 JES2 的 SYS1.HASPACE 数据集的 JCL 程序,可以在配置 系统是作为参考。关于 JCL 的内容,已经在第三章中详细介绍了。

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

//ALLOCAT EXEC PGM=IEFBR14

//SPOOL1 DD DSN=SYS1.HASPACE,UNIT=3380,

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

// SPACE=(CYL,884,CONTIG),DCB=(DSORG=PSU)

//SPOOL2 DD DSN=SYS1.HASPACE,UNIT=3380,

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

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

/*

对JES2 管理的SPOOL 数据集的有效使用以及JES2 的相关性能的提高都依赖于对JES2 的 SPOOL 卷的正确管理。有效的管理手段包括对 SPOOL 的分区、磁道单元的使用以及及 时将坏磁道标记为不可用等等。
我们在为 SPOOL 卷选择设备时,对于那些包含了 JES2 的控制块、作业的输入和输出 数据以及远程终端使用的SPOOL 消息队列的卷,应该建立在有良好的速度和容量的设备上, 例如 3390。不要利用那些已经使用的设备进行大量数据的传输,这样会大大影响到系统的 性能。SPOOL 数据集的缺省名为 SYS1.HASPACE,用户也可以通过初始化语句 SPOOLDEF 的参数 DSNAME=为数据集起另外一个名字。用户可以用 SYS1.HASPACE 去定义 1~253 个 卷,把这些卷都作为 SPOOL 卷来使用。通过初始化语句 SPOOLDEF 的参数 BUFSIZE=可 以为 SPOOL 数据集中的记录定义长度。
为了使系统达到比较高的性能,定义专用的 SPOOL 卷时非常必要的,也就是说不要让 SPOOL 数据集和其它类型的数据集共享一个卷。如果在系统中有多个 SPOOL 设备,那么 让这些设备使用一个独立的通道也是一种较好的选择。但因为 JES2 对通道的访问率并不是 很高,因此这个独立的通道并不需要是专用的。JES2 的命令$S SPL,FORMAT 对通道的使用 率是非常高的,但仅仅持续一段时间,用以完成对 SPOOL 卷的格式化。另外通过使用高速 缓冲存储控制器也可以极大地提高 SPOOL 卷的使用性能,因为它能够为 SPOOL 卷提供高 速的数据缓冲。通常我们使用 3990-3 高速缓冲存储控制器,对于 JES2 的SPOOL 卷来说它 有以下的优点:

$ 较大的高速缓冲存储空间

$ 稳定的存储空间,对 DASD 设备的读和写提供高速的缓冲
$ 可以作为 DASD 设备的镜像
高速缓冲存储器能够对正在使用的以及已经存储在 DASD 设备上的数据提供高速的访 问。DASD 的快写方法实际上是一种通过对存储在高速缓冲存储器内的数据的读和写来加速 对 DASD 设备访问的方法,如果用户通过在多个不同的卷上分布 I/O 活动的方法来提高 SPOOL 卷的性能,那么使用 DASD 的快写方法可以使用用户仅需定义少量的大型 SPOOL 数据集,并且不需要大量的 IOS 排队时间(IOS 排队时间是指从一个 JES2 的成员请求 IO 到 IO 真正被执行的时间间隔)。这样便可以大大减少了 JES2 中所需的 DASD 设备,用户便可 以减少在系统上的投资。我们可以通过运行 RMF DASD 报告来显示 JES2 的 SPOOL 卷的性 能。

JES2 将每一个 SPOOL 卷的空间分成一个个磁道组,然后在将这些磁道组分配给作业。 每个磁道组包含一个或多个 DASD 设备的磁道。每次 JES2 为一个作业分配一个磁道组,当 所分配的磁道组上的空间用完时,JES2 在 SPOOL 卷上为作业分配沿设备圆周最接近所用的 磁道组的磁道组作为下一个磁道组。在 JES2 中根据循环使用的原则在多个 SPOOL 卷之间 分配磁道组,这样便可以在不同的卷之间建立 I/O 活动的平衡,最大限度地降低搜索的时间。

通过初始化语句 SPOOLDEF 的参数 TGSIZE=可以定义在一个磁道组中的 JES2 缓冲区 的数量,JES2 使用这个值来为每一个 SPOOL 设备计算一个磁道组中的磁道数。如果计算出 来是一个小数的话,磁道组的大小取能容纳所定义的缓冲区的最小整数。在一个包含了多种 不同的 SPOOL 设备的环境中,通过将 TGSIZE=参数设置一个合理的值,可以保证无论使用 那种类型的设备,为每个作业分配的空间的大小都是相同的。TGSIZE=参数的值太小会导致 分配给每个作业的磁道组的数量太多;但 TGSIZE=参数的值太大有会导致 SPOOL 空间的浪 费和增加搜索时间。用户必须通过查阅相应的手册,了解系统中设备的属性才能够对 TGSIZE=给出一个合理的值,另外也应该了解 SPOOLDEF 语句的 BUFSIZE=、TGSIZE=、 和 TGSPACE=(MAX=)几个参数。
磁道单元是指在一个磁道上按照逻辑顺序组织起来的一组JES2 的缓冲区或一组磁道记 录。通过初始化语句SPOOLDEF 的参数TRKCELL=可以指定在每一个磁道单元中的记录数。 当在 JES2 系统中使用磁道单元功能时,可以通过一个操作将一个磁道单元而不是磁道记录 从 SPOOL 卷送往打印机进行处理。通过使用磁道单元的功能可以有效地减少对 SPOOL 使 用的竞争。值得注意的是磁道单元的功能仅仅对本地和功能子系统(FSS)打印机有效,不能 够在远程作业入口、网络作业入口和 PSO(process SYSOUT)界面下使用。
通常磁道单元的功能建议使用在有功能子系统控制的高速打印机上,尤其是对打印那些 包含了图形信息的页模式数据集来说,会大大地提高处理的性能。但是,对于那些低速的打 印机来说,例如 3820,磁道单元功能是不合适。对于这些设备来说如果不使用磁道单元功 能将会在 FSS 地址空间和内存中占用大量的存储空间。因此,JES2 对打印机的缺省设置是 不使用磁道单元功能,如果在用户的系统中需要使用这个功能,必须通过初始化语句明确地 进行定义。即在初始化语句 PRT(nnnn)中设置参数 TRKCELL=YES,为了避免出现性能的波 动,必须对在功能子系统控制下的每一个高速打印机设置 TRKCELL=YES 参数。
一般来说,如果满足下面两个条件就可以使用磁道单元的功能:
$ 必须通过初始化语句 OUTCLASS(v)为 SYSOUT 类指定磁道单元功能
$ 必须在初始化语句 PRT(nnnn)中设置参数 TRKCELL=YES 对于针式打印机和非针式打印机来说都可以使用磁道单元功能。 从另外一个角度来说,磁道单元的功能可能会影响系统和打印机的效率。一台打印机通
过磁道单元功能来为它的缓冲区准备数据,同时通道程序被用来从缓冲区向打印机发送数 据。由于这些缓冲区空间仅仅用来传送数据,因此会减少在 MVS 中所使用的固定和空闲的
存储空间的数量。通过初始化语句 SPOOLDEF 的参数 BUFSIZE=和 TRKCELL=可以定义这 些缓冲区空间的大小,如果 TRKCELL=的值太高的话,将会有大量的主存空间被占用,从 而导致整个系统性能的下降。
通过对 TRKCELL=的定义可以在每一个磁道的结尾处遗留下较短的磁道单元,如果在 初始化语句 OUTCLASS(v)中没有指定磁道单元功能(TRKCELL=NO),这些磁道单元将会被 分配给 SYSOUT 类的数据集。当系统在一个磁道上尽可能地分配磁道单元后,至少有 TRKCELL/2 个磁道记录被残留下来,这些残留的记录也被看作一个磁道单元,较短的磁道 单元。这些磁道单元虽然不能够向完整的磁道单元那样来使用,但也可以用来提高 DASD 空间的使用率。这些残留下来的记录可以被分配给作业中没有使用磁道单元功能的数据集。 但由于这些记录有相当高的概率不能被分配,这时 DASD 空间的利用率就会降低。在理想 情况下,对于 TRKCELL=的定义可以正好平分位于一个磁道组中的所有磁道记录,这样便 可以大大地提高 DASD 的利用率,用户可以通过查阅相关的 DASD 设备的手册确定合适的 TRKCELL=值。
对于所有的 JES2 数据来说,SPOOL 是一个不可少的媒介,所有的输入作业和系统输出 (SYSOUT)都保存在 SPOOL 上。JES2 为系统提供了从 SPOOL 卸载数据到数据集以及从数 据集重载数据到 SPOOL 的功能,这种功能可以使用磁带或 DASD 设备作为卸载媒介。 SPOOL 的卸载功能可以方便地帮助系统在不同版本之间的移植,不会因为系统的冷启动丢 失作业和数据,这也意味着这种卸载功能是与版本无关的。
特别提醒用户的是,SPOOL 的数据传输包含了所有作业语句的文本内容,如果不加以 适当的保护,可能会造成 RACF 的用户名和口令的泄密。