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