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 PS> I wonder what serialization you are getting for the target PDS is your example? Not so important if only PDSEs I guess :-) I would think that you might actually want ISPF-style enqueues. On Wed, Jun 17, 2020 at 7:22 AM Lionel B Dyck <lbd...@gmail.com> wrote: > Kirk - just allocating the dataset prior to the cp was faster - and that > was without passing the //DD. > > Alloc f(dd) shr reuse ds('my.pds') > Bpxwunix - cp -v -S a=.txt "//'my.pds'" . > Free f(dd) > > Appreciate your suggestion > > > Lionel B. Dyck <sdg>< > Website: https://www.lbdsoftware.com > > "Worry more about your character than your reputation. Character is what > you are, reputation merely what others think you are." - John Wooden > > -----Original Message----- > From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> On Behalf > Of Kirk Wolf > Sent: Wednesday, June 17, 2020 7:03 AM > To: IBM-MAIN@LISTSERV.UA.EDU > Subject: Re: Improve OMVS cp performance? > > Hi Lionel, > > Can you provide any more detail on how you are invoking "cp" ? > > - With cp, there won't be any way to avoid opening the PDSE for each > member, but you might get some improvement by allocating a DD to the PDSE > and then passing //DD(member) to cp, so as to avoid allocation each time. > If you do this, then you will also know for sure if you are using local > spawn (_BPX_SHAREAS=YES), since otherwise the DD won't be visible if a new > AS was forked. > > - The other issue would be the cost of spawning a Unix process for each > member, even if local spawned. I haven't tested this, but you might write > a shell script that is passed the DD as arg and member names as lines to > stdin. Then the script could do the cp for each member. The hope is > that since cp is also a shell "built-in" you might avoid spawning > processes for each one. > > - the "best" performance possible would be writing your own BPAM code that > also does the Unix fileio. Assembler is fine, but I would use C/++ for > everything except the low level BPAM I/O routines, since I would probably > use buffered filestreams for the Unix files. > > FWIW: It's a pity that the IBM C library doesn't have any support for > BLDL/NOTE/POINT processing of PDS/Es -- see my old RFE and vote if you > agree: > https://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=80811 > > > > On Wed, Jun 17, 2020 at 5:30 AM Lionel B Dyck <lbd...@gmail.com> wrote: > > > " What's on the non-OMVS side? a PDS(E)? Multiple PS data sets?" > > > > On the z/OS side is a PDS(E). > > > > Thanks > > > > > > Lionel B. Dyck <sdg>< > > Website: https://www.lbdsoftware.com > > > > "Worry more about your character than your reputation. Character is > > what you are, reputation merely what others think you are." - John > > Wooden > > > > -----Original Message----- > > From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> On > > Behalf Of Paul Gilmartin > > Sent: Tuesday, June 16, 2020 9:23 PM > > To: IBM-MAIN@LISTSERV.UA.EDU > > Subject: Re: Improve OMVS cp performance? > > > > On Tue, 16 Jun 2020 20:34:59 -0500, Lionel B Dyck wrote: > > > > >Any suggestions on how to speed up cp copying multiple file to and > > >from > > z/OS? > > > > > >I gave SHAREAS=YES. Anything else? Can I control buffers or ? > > > > > What's on the non-OMVS side? a PDS(E)? Multiple PS data sets? > > > > I might suggest as an extreme measure Rexx under ISPF using ADDRESS > > SYSCALL I/O for OMVS and LM services for Classic. > > SYSCALL READFILE/WRITEFILE are available for text files only. > > > > -- gil > > > > ---------------------------------------------------------------------- > > For IBM-MAIN subscribe / signoff / archive access instructions, send > > email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > > > > ---------------------------------------------------------------------- > > For IBM-MAIN subscribe / signoff / archive access instructions, send > > email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > > > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, send email > to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN