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

