[an error occurred while processing this directive]

HP OpenVMS Systems

ask the wizard
Content starts here

DECstep (SEPS) and CTLPAGES - CTLIMGLIM MAIL?

» close window

The Question is:

 
I recently saw in a SYSTARTUP_VMS.COM (on a SEPS Y2K system) a check to see
if CTLPAGES-CTLIMGLIM was >= 128. If so a mail was sent to SYSTEM saying the
system parameters should be changed.
What is the significance of this check?
 


The Answer is :

 
  There are certain obscure circumstances where some DECnet-Plus processes
  can grow until their virtual address space is exhausted, and maintaining
  the delta between CTLPAGES and CTLIMGLIM to a value of 128 or less (on
  OpenVMS VAX) has been shown to reduce or eliminate the incidence.
 
  This error is remedied by the VAXSYS08_062 and later ECO kits for V6.2.
  This problem is known to arise in V6.1 and V6.2.  SEPS (DECstep) appears
  to erroneously still include the check on V7.1, though the problem does
  not appear to arise on the OpenVMS version in question -- the OpenVMS
  Wizard will pass this along to the DECstep team.
 
  For anyone who has nothing better to do than wonder about the magic value
  of 128 pages, here is a brief explanation:
 
	1. CTLPAGES is an area of P1 space which may be used for both process
	   specific and image specific allocations. If there is insufficient
	   free space in CTLPAGES then a 'process' allocation will fail,
	   whereas an 'image' allocation will 'overflow' into P0 space and
	   allocate some of that.
 
           P0 space is deleted when an image exits, so if the allocation is
           only required for the life of the image then it can be satisfied
           from P0 space, otherwise it MUST be satisfied from P1 space, which
	   survives until process deletion.
 
	2. CTLIMGLIM is a limit on the amount of P1 space that can be
           allocated for image purposes --- In other words, image allocations
           are forced to use P0 space before all of CTLPAGES is consumed, and
	   thus this reserves some P1 for process allocations.
 
	3. The allocation algorithm for image allocations is as follows:
 
	   a. Try to allocate some P1 space, and if this fails then allocate
              P0 space.  On failure, skip to '3d'.
 
	   b. If allocation of P1 space is successful then if the total
              image allocation is below CTLIMGLIM then all is OK.
 
	   c. Else (Oooops), too much P1 space was allocated, so deallocate
              the block and go to '3d'.
 
	   d. Allocate memory from P0 space, returning a success or failure
              status to the caller.
 
	   e. Caller uses memory and then deallocates it (returning it to
              the free list).
 
	4. The bug occured at step '3c'. If the block being deallocated was
	   adjacent to any other free blocks of P1 space then the deallocation
	   routine would amalgamate (merge) the adjacent free blocks and would
	   return the total size of the large, amalgamated free block. This in
	   effect 'corrupts' the request size so that it was no longer the
	   original request size, but an arbitrarily larger size. This is
           only a minor problem, unless the amalgamated block is greater than
           64 kilobytes (ie it is only a problem if it takes more than a word
           to store the length of the block). The problem only shows up if the
           amalgamated block is greater than 64 kilobytes, which means that
           it only shows up if there is at least 64 kilobytes of free CTLPAGES
           in P1 space.  Even when there is more than 64 kilobytes free, the
           problem might not show up, as it all depends upon the level of
           fragmentation of the CTLPAGES pool. Therefore, the problem may
           appear to come and go in an unpredictable way.
 
	5. 64 kilobytes is equivilent to 128 pages on OpenVMS VAX. Therefore,
           as image allocations will succeed until CTLIMGLIM is reached, the
           implication is that the 'fail-over' into P0 space will only occur
           when CTLIMGLIM pages have already been allocated, and therefore
           when the amount of free P1 is less than CTLPAGES minus CTLIMGLIM.
 
	6. The DNS Clerk (SYS$NAME_SERVICES) allocates unusually large chunks
	   of CTLPAGES. Certainly these chunks can be in excess of 16 kilobyte
           bytes, but probably not much larger. (The uncertainty about the
           maximum size is the reason that the OpenVMS Wizard cannot specify
           a precise relationship between CTLPAGES and CTLIMGLIM.) Take an
           example where the image allocation is currently 16 kilobytes (32
           pages) below CTLIMGLIM, so image allocations of 16k will succeed.
           If an allocation request is made for 16 kilobytes plus 1 byte,
           then it will fail.  If all the free memory in P1 is adjacent then
           the size of the free block could be as large as CTLPAGES minus
           CTLIMGLIM *plus* the 32 pages of CTLIMGLIM which has not yet been
           consumed.  Thus:
 
		Potential problem if 128 < 32 + CTLPAGES - CTLIMGLIM
 
		Potential problem if 96 < CTLPAGES - CTLIMGLIM
 
	7. There is a substantial element of uncertainty in the above figures.
	   Specifically, the maximum DNS allocation is not defined (somewhere
	   greater than 16 kilobytes) and some of the 'process' part of
           CTLPAGES will *always* have been consumed (for example, by process
           logical names and the channel table).
 

answer written or last revised on ( 2-AUG-1999 )

» close window