.LEFT MARGIN 2.RIGHT MARGIN 74 .FIRST TITLE .TITLE Building RPT for faster error reports. .SUBTITLE B.#Z.#Lederman .PARAGRAPH Recently, I received a complaint that it was taking too long to obtain the error log summary reports. (The reports are automatically printed out as part of our SHUTUP procedure, as a warning in case there were disk errors while making backup copies of system disks, or other errors.) When I looked into the matter, I discovered that the RPT program was very heavily overlayed, and that it might run faster if built with fewer or no overlays. I built a copy of the task with no overlays at all (using the supervisor mode FCS resident library on M-Plus), and tested it on a lightly loaded 11/70 using some of the typical report commands we use here and a log file which was 391. blocks long and contained data from 07-Nov-84 through 16-Jan-85. The results were quite impressive. A scan for errors which occured during the past week with the command .BLANK RPT LOG1.RPT=[1,6]LOG.ERR;11/W:N/SU:A/DA:P:7 .BLANK was reduced in time from 3 minutes 40 seconds to only 40 seconds. A report listing all error log entries in short format in the file: .BLANK RPT LOG3.RPT=[1,6]LOG.ERR;11/W:N .BLANK was reduced in time from 15 minutes 24 seconds to 3 minutes 56 seconds (the resulting report file is 510. blocks long). I compared the output of the two versions of RPT with the CMP utility, and found them to be identical. Measuring the two tasks with System Accounting and SPM-11 shows a great reduction in the system resources consumed by the task: not only are all of the disk overlays gone, but the number of CPU cycles consumed and disk QIOs issued are also reduced. Both versions extend themselves to create internal work space, and end up about the same size when doing large reports (they will both approach the 32K word task size limit). I also did a little testing with an identical non-overlayed version, but which also is built for I-and-D space, so it would have even more internal work space available. It expanded to 46K words, but had only a slight improvement in resources used (somewhat fewer disk I/Os, probably from not having to re-read from the ERRLOG.ULB library) over the non-overlayed task without I-and-D space. We are using this version of RPT on our development system now, and plan to use it on all of our systems in the future. .PARAGRAPH If you do not have a system which supports I-and-D space or Supervisor mode this approach does not work, as there won't be enough internal work space left after all of the program and FCS code is built into the task image. The program will give you summaries, but cannot process any of the device packets as it apparently cannot get the appropriate modules out of the ERRLOG library and into memory. Though I have not done much testing in this area (as I have a version which suits my needs) I did test a version which is less overlayed than that distributed by DEC, but which had enough work space to process an error log file. This is an area where someone could do a little testing to find out how "flat" the program can be made, and still have enough space left to work. There might also be a balance between reading overlays and having to read the ERRLOG library. .PARAGRAPH The following is the command file to build the non-overlayed version. Please be aware of the usual DECUS disclaimer, that all information is supplied "AS IS", with no warranty whatsoever. .BLANK.NO JUSTIFY.NO FILL ; TKB BUILD FILE FOR RPT Non-overlayed ; ON AN RSX-11M-PLUS SYSTEM ; LINKING TO FCSFSL ; B. Z. Lederman ; OU:[3,54]RPTFSL/-FP/CP/MM/ID, MP:[1,34]RPTID/-SP/MA = ; [1,24]RPT/LB:CTLRPT:GLODAT:FILEIO:INTUTL:VALUTL:INTERP [1,24]RPT/LB:OPERAT:ARITH:RSXASC:CNVFUN:COMFUN:CNDFUN [1,24]RPT/LB:RPTINI:USRFUN:CTLFUN:RPTFUN:FILEGE:FILECM [1,24]RPT/LB:FILEOP:MEMORY:LIMITS:INTSTA:PKTFUN:FILEIN:OPRSUB [1,24]RPT/LB:MODHAN:FILECO:INTEXT:INTPUT [1,24]RPT/LB:RADVAL:FILERE:PAGBRK:LOKFUN:FORMAT:INTWRI [1,24]RPT/LB:CODFUN:TIMCNV:STRFUN:VALRAD:TIMFUN:ARITHE [1,24]RPT/LB:PDP11:MSGRPT:MSGCOM:DISPLA:DECLAR:SIGNAL ; [1,24]NEISLB/LB ; / TASK=...RPT IDENT=02.01 ; PAR=GEN:0:0 PRI=50 UNITS=10 ; ASG=TI:1 ; COMMAND LUN ASG=TI:2 ; ERROR LUN ASG=SY:3 ; INPUT LUN ASG=SY:4 ; OUTPUT LUN ASG=SY:5 ; REPORT LUN ASG=TI:6 ; USER LUN ASG=SY:7 ; CONTROL LUN ASG=SY:10 ; MODULE LUN ; SUPLIB=FCSFSL:SV ; ; Parameters Options ; GBLDEF=LPLINE:74 ; ; USERCM is non-zero to have RPT prompt for the control file to use. ; GBLDEF=USERCM:0 ; ; Module RWLONG is not used ; GBLDEF=..RWLG:177777 GBLDEF=FDAMOD:177777 GBLDEF=FDAOUT:177777 ; ; To increase the size of the execution stack ; increase the extension by multiples of ; 10 (octal) bytes. ; EXTSCT=XCSTK0:300 ; ; To increase the size of the value stack, ; increase the size of PSECT VLSTK0 by multiples ; of 2. ; EXTSCT=VLSTK0:50 ; ; To increase the size of the value heap, ; increase the size of PSECT VHEAP0 ; EXTSCT=VHEAP0:732 ; ; To increase the size of the declaration stack ; increase the extension by multiples of ; 10 (octal) bytes. ; EXTSCT=DCSTK0:10 / .BLANK.JUSTIFY.FILL I havn't tried to change any of the values in the build file to see if they would have an effect on the speed of the report. .BLANK The following are the build command file and ODL file to build a partially overlayed version of RPT. .BLANK.NO JUSTIFY.NO FILL ; TKB BUILD FILE FOR RPT Partially overlayed. ; ON AN RSX-11M-PLUS SYSTEM (or RSX-11M) ; LINKING TO FCSRES ; B. Z. Lederman ; OU:[3,54]RPTRES/-FP/CP/MM, MP:[1,34]RPTRES/-SP/MA = RPTRES/MP ; TASK=...RPT IDENT=02.01 ; PAR=GEN:0:0 PRI=50 UNITS=10 ; ASG=TI:1 ; COMMAND LUN ASG=TI:2 ; ERROR LUN ASG=SY:3 ; INPUT LUN ASG=SY:4 ; OUTPUT LUN ASG=SY:5 ; REPORT LUN ASG=TI:6 ; USER LUN ASG=SY:7 ; CONTROL LUN ASG=SY:10 ; MODULE LUN ; LIBR=FCSRES:RO ; ; Parameters Options ; GBLDEF=LPLINE:74 ; ; USERCM is non-zero to have RPT prompt for the control file to use. ; GBLDEF=USERCM:0 ; ; Module RWLONG is not used ; GBLDEF=..RWLG:177777 GBLDEF=FDAMOD:177777 GBLDEF=FDAOUT:177777 ; ; To increase the size of the execution stack ; increase the extension by multiples of ; 10 (octal) bytes. ; EXTSCT=XCSTK0:300 ; ; To increase the size of the value stack, ; increase the size of PSECT VLSTK0 by multiples ; of 2. ; EXTSCT=VLSTK0:50 ; ; To increase the size of the value heap, ; increase the size of PSECT VHEAP0 ; EXTSCT=VHEAP0:732 ; ; To increase the size of the declaration stack ; increase the extension by multiples of ; 10 (octal) bytes. ; EXTSCT=DCSTK0:10 / .PAGE ; ; TKB ODL FILE FOR RPT ; ON AN RSX-11M-PLUS SYSTEM (or RSX-11M) ; LINKING TO FCSRES ; CREATED BY SYSGEN3.CMD VERSION 1.82 ; ; B. Z. Lederman Reduce number of overlays. ; .NAME RPT .BLANK .ROOT BASE-*(EXECUT, MESSAG), DECSIG-*(DECLAR, SIGNAL) .BLANK BASE: .FCTR [1,24]RPT/LB:CTLRPT:GLODAT:FILEIO-BASE1 BASE1: .FCTR [1,24]RPT/LB:INTUTL:VALUTL-BASE2 BASE2: .FCTR LB:[1,1]SYSLIB/LB:FCSFSR:SAVR1-LIB .BLANK EXECUT: .FCTR MAIN-*(OPEN, other) other: .fctr INPUT-OUTPUT-CODFUN MAIN: .FCTR [1,24]RPT/LB:INTERP-MAIN1 MAIN1: .FCTR [1,24]RPT/LB:OPERAT:ARITH:RSXASC-MAIN2 MAIN2: .FCTR [1,24]RPT/LB:CNVFUN:COMFUN:CNDFUN-LIB ; ; File handling overlays ; OPEN1: .FCTR [1,24]RPT/LB:RPTINI:USRFUN:CTLFUN OPEN2: .FCTR [1,24]RPT/LB:RPTFUN-[1,24]NEISLB/LB FILEGE: .FCTR [1,24]RPT/LB:FILEGE:FILECM-GCML OPEN: .FCTR OPEN1-OPEN2-FILEGE-FILEOP FILEOP: .FCTR [1,24]RPT/LB:FILEOP GCML: .FCTR LB:[1,1]SYSLIB/LB:.GCML ; ; Execution overlays ; INPUT: .FCTR [1,24]RPT/LB:MEMORY:LIMITS:INTSTA-LIB-INPUT1-INPUT2 INPUT1: .FCTR [1,24]RPT/LB:PKTFUN:FILEIN:OPRSUB-LIB INPUT2: .FCTR [1,24]RPT/LB:MODHAN:FILECO:INTEXT:INTPUT-LIB .BLANK OUTPUT: .FCTR [1,24]RPT/LB:RADVAL:FILERE:PAGBRK:LOKFUN:FORMAT:INTWRI-LIB .BLANK CODFUN: .FCTR [1,24]RPT/LB:CODFUN:TIMCNV:STRFUN:VALRAD:TIMFUN:ARITHE-LIB .BLANK MESSAG: .FCTR FILERE-PDP11-DISPLA FILERE: .FCTR [1,24]RPT/LB:FILERE:PAGBRK-LIB PDP11: .FCTR [1,24]RPT/LB:PDP11-MSGRPT-MSGCOM MSGRPT: .FCTR [1,24]RPT/LB:MSGRPT MSGCOM: .FCTR [1,24]RPT/LB:MSGCOM DISPLA: .FCTR [1,24]RPT/LB:DISPLA ; ; DECSIG co-tree ; .NAME DECSIG DECLAR: .FCTR [1,24]RPT/LB:DECLAR SIGNAL: .FCTR [1,24]RPT/LB:SIGNAL .BLANK LIB: .FCTR [1,24]NEISLB/LB-LB:[1,1]SYSLIB/LB .BLANK .END .BLANK.JUSTIFY.FILL If anyone does care to experiment with this, you might try moving all of the "-LIB" references in the various trees to one reference in the root of the task.