On 18/06/2020 12:24 am, Kirk Wolf wrote:
Lionel,
I wasn't thinking of using the "all members" form of cp - that seems like
it should be *much* better, although it would depend on how cp works under
the covers - evidence indicates that it just loops and does
alloc/open/close/free on each member.    If only the cp authors had better
C library support for PDSs ;-)

I'm curious - how much time did you save by preallocating the PDS?

Kirk Wolf
http://dovetail.com

Preallocating the PDS gave me about a 12x speed improvement. Here is a Rexx shell script rxalloc to do the allocation (I couldn't figure out a way to do bpxwdyn from the shell):

/* rexx */
parse arg dataset
call bpxwdyn "alloc da("|| dataset || ") old msg(2) rtddn(ddname)"
say ddname

and a shell script to test:

#!/bin/sh
export _BPX_SHAREAS=YES
./rxalloc SYS1.MACLIB
/bin/cp -T -U -S a=.txt "//'SYS1.MACLIB'" /home/andrewr/temp

The individual member copies with progress indicator in Zigi also seems to have significant overhead. Approximate copy speeds on my system were:
Zigi: 1 member/second
cp, without preallocation: 8 members/second
cp, with preallocation: 100 members/second

SMF also suggests cp for some reason opens and closes the PDS twice for each member. I wrote a small Java program to perform the copy using the JZOS classes, this coped about 200 members/second.

--
Andrew Rowley
Black Hill Software

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to