如何减少SORT操作中的CPU [英] How can I reduce CPU in SORT operation

查看:198
本文介绍了如何减少SORT操作中的CPU的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am using DFSORT to copy the Tape data-set to a temp file, and processing around 80000000 records. Its taking 3 Hours to just copy the data-sets. is there any other way around to reduce the CPU time. Suggestions will be very helpful. Thank You.

    //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性能的一些评论,这应该会改善您的总体经过时间.

A few comments on improving I/O performance which should improve your overall elapsed time.

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

摘自IBM的 MVS JCL手册.

//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.

I chose 192 as its relatively cheap in terms of memory these days. Adjust for your environment. This essentially tells the system how many blocks to read with each I/O which reduces time related to I/O operations. You can play with this number to get an optimal result. The default is 5.

BUFNO =缓冲区
指定要分配的缓冲区数 到DCB.最大值通常为255,但可以由于以下原因而减小 该区域的大小.注意:请勿使用以下代码对BUFNO子参数进行编码: DCB子参数BUFIN,BUFOUT或DD参数QNAME.

BUFNO=buffers
Specifies the number of buffers to be assigned to the DCB. The maximum normally is 255, but can be less because of the size of the region. Note: Do not code the BUFNO subparameter with DCB subparameters BUFIN, BUFOUT, or DD parameter QNAME.

  1. 您可以考虑使用块大小.输出上的块大小似乎很奇怪.确保已针对要使用的设备进行了优化.对于TAPE设备,该值应尽可能大.对于3480或3490设备,它可以大到65535.您无需指定LRECL,而是指出其30050,则可以将BLKZIE指定为60100,即每个块有两个记录.更高的I/O效率.

有关

  1. 如果您实际上正在使用TAPE,最后的快速提示是指定多个TAPE设备.这将允许在安装下一盘磁带时写入其中一盘磁带.我也在这里包括了BUFNO示例:

//SORTOUT DD DSN=&&TEMP, // DISP=(NEW,PASS,DELETE), // DCB=(RECFM=FB,LRECL=30050,BLKSIZE=0,BUFNO=192), // UNIT=(TAPE,2)

//SORTOUT DD DSN=&&TEMP, // DISP=(NEW,PASS,DELETE), // DCB=(RECFM=FB,LRECL=30050,BLKSIZE=0,BUFNO=192), // UNIT=(TAPE,2)

当然,这些优化取决于您的物理环境和DFSMS设置.

Of course these optimizations depend on your physical environment and DFSMS setup.

这篇关于如何减少SORT操作中的CPU的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆