> >>If the CPOOL spanned one or more 4K aligned pages, then a ZERO=YES
> >>could zero the area before and after the 4K block and just set the
> >>virtual page table entries for the block to be a read-only dedicated
> >>pre-zero'ed page. I seem to have the impression that STORAGE does
> >>this for allocated pages in some cases (I think that allocated area
> >>has to be page aligned and a multiple of page length to get
> >>pre-zeroed storage).
> >
> >   There are no cases where STORAGE provides you with
> >a read-only page.
> >
> >   What you are suggesting would be considerably slower
> >than clearing done by your own code.

> I might have phrased my description incorrectly. What I was saying is 
> that when you initially allocate an virtual area when that area is 
> actually mapped to memory the page that gets loaded (paged-in) is 
> pre-zeroed. I was just suggesting that this would be simplest to do 
> if there was a single pre-zeroed page to be used for the page-in and 
> the mapping table entry was marked to not use that DASD copy as the 
> target when the virtual page needs to be paged out again.
> 
> BTW: Is my impression that if I use STORAGE to allocate a 
> MULTIPLE-PAGE area, then the virtual page will be pre-zeroed? If so, 
> how is this done?

 When RSM assigns a frame to a virtual page which is in a first
reference state (which simply means that the page is invalid 
at some level in the DAT structure, and there is no copy of 
the virtual storage elsewhere (on aux or in the home
object for a DIV map), RSM zeros the frame.  This is done 
using an MVCL with a source length of zero. On recent 
generations of machines, the MVCL millicode recognizes this case
(4K starting boundary, and length is a multiple of 4K) 
and uses a hardware operation (which is available only to
millicode) which does a padding store executed in the
storage controller, without bringing the lines into the cache hierarchy. 

  For the various ways of allocating virtual pages, there is 
documentation stating when a program can depend on the the
storage being zeroed by the system, in case that knowledge can
allow the program to avoid redundantly zeroing the storage.

  When a virtual page is allocated, it will either be backed
by a zeroed frame, or will be in a first reference state, and then 
subsequently be backed by a frame when an access exception
occurs. 

  CPOOL GET does not allocate virtual storage (well, except
in the case where a CPOOL GET,COND results in a new pool 
extent being built).  The virtual storage is allocated when 
the CPOOL BUILD is done.  CPOOL GET runs in the key and state
of its caller, and simply does a CDS to remove the first cell
from the free queue and return that to the caller.  CPOOL FREE
simply does a CDS to add the freed cell to the head of the free queue.
CPOOL GET and FREE do not interface with RSM to back or unback
virtual pages. 

Jim Mulder   z/OS System Test   IBM Corp.  Poughkeepsie,  NY

----------------------------------------------------------------------
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