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

Reply via email to