John Krew wrote:
>I was wondering if anybody on the list has had any experience using
>the IARVSERV macro for sharing data among address/data spaces.

Oracle on z/OS uses it, specifically to share the database server's
"global" memory across multiple address spaces that also house client
sessions.  This is a horizontal scaling feature.  (Since Oracle is written
in portable C we can't use ALETs directly for horizontal sharing, and
of course we didn't want to use global memory like CSA.)

I have a few bits to add to the others' replies.  IARVSERV was
invented to support, and underlies, POSIX shared memory provided
by UNIX System Services.  Using the C/UNIX/BPX interface to
this service is somewhat easier but requires that you be a POSIX
process (if you aren't, you get dubbed).  If you use IARVSERV
directly there are two ways to use it, but only one of them is GUPI,
namely page-level sharing.  If you are sharing a lot of memory there
is considerable overhead in MVS SQA--that's real memory and a
chunk of everyone's address space topography--for maintaining page
mapping tables.  The overhead is 32 bytes of SQA per shared page
per sharing address space.  The non-GUPI interface provides sharing
of whole 1Mb segments without the onerous SQA cost but it imposes
a heavy recovery burden on your application and likely would not be
considered supported by IBM.

I believe some of the above is changed/improved for 64-bit applications.

Would either systems _or_ applications programmers use IARVSERV?
I doubt it, except indirectly by those porting or writing UNIX-type applications and using one of the BPX interfaces. We found a good use for it, but Oracle's
situation is somewhat unusual.

/Bill Manry - Oracle Corp.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to