我正在使用DFSORT将Tape数据集复制到临时文件,并处理大约8000万条记录。仅花费3个小时即可复制数据集。
有没有其他方法可以减少CPU时间。
建议将非常有帮助。
谢谢。

    //STEP40  EXEC SORTD
    //SORTIN   DD DSN=FILEONE(0),
    //            DISP=SHR
    //SORTOUT  DD DSN=&&TEMP,
    //            DISP=(NEW,PASS,DELETE),
    //            DCB=(RECFM=FB,LRECL=30050,BLKSIZE=0),
    //            UNIT=TAPE
    //SYSOUT   DD SYSOUT=*
    //SYSPRINT DD SYSOUT=*
    //SYSIN    DD *
         SORT FIELDS=(14,6,PD,A,8,6,PD,A,45,2,ZD,A)
         OUTREC IFTHEN=(WHEN=(70,18,CH,EQ,C' encoding="IBM037"'),
                     OVERLAY=(70:C'  encoding="UTF-8"'))
         OPTION DYNALLOC=(SYSDA,255)
    /*

最佳答案

关于改善I / O性能的一些评论,这应该会改善您的总体使用时间。

  • 在您的SORTIN和SORTOUT DD语句上,将以下内容添加到DCB中。

  • 摘自IBM的MVS JCL Manual第143页。
    //SORTIN   DD DSN=FILEONE(0),
    //            DISP=SHR<b>,DCB=BUFNO=192</b>
    //SORTOUT  DD DSN=&&TEMP,
    //            DISP=(NEW,PASS,DELETE),
    //            DCB=(RECFM=FB,LRECL=30050,BLKSIZE=0,BUFNO=192),
    //            UNIT=TAPE
    

    这些天,我选择192作为其相对便宜的内存。根据您的环境进行调整。这实质上告诉系统每个I / O读取多少个块,从而减少了与I / O操作有关的时间。您可以使用此数字来获得最佳结果。预设值为5。

    BUFNO = buffers指定要分配的缓冲区数
    到DCB。最大值通常为255,但可以由于以下原因而减小
    该区域的大小。注意:请勿使用以下代码对BUFNO子参数进行编码
    DCB子参数BUFIN,BUFOUT或DD参数QNAME。
  • 您可以考虑使用块大小。输出上的块大小似乎很奇怪。确保针对要使用的设备进行了优化。对于TAPE设备,该值应尽可能大。对于3480或3490设备,它可以多达65535。您无需指定LRECL,而是指出其30050,则可以将BLKZIE指定为60100,即每个块有两个记录。更高的I / O效率。

  • 这是有关BLKSIZE selection磁带的更多信息。
    
    3490 Emulation (VTS)    262144 (256 KB)
    3590                    262144 (256 KB) (note: on some older models the limit is
                                                   229376 (224 KB) 262144 (256 KB)
    
  • 如果您实际上正在使用TAPE,最后一个快速提示是指定多个TAPE设备。这将允许在安装下一盘磁带时写入其中一盘磁带。我在这里也包括了BUFNO示例:
  • //SORTOUT DD DSN=&&TEMP,// DISP=(NEW,PASS,DELETE),// DCB=(RECFM=FB,LRECL=30050,BLKSIZE=0,BUFNO=192),// UNIT=(TAPE,2)
    当然,这些优化取决于您的物理环境和DFSMS设置。

    10-08 00:50