[an error occurred while processing this directive]

HP OpenVMS Systems

ask the wizard
Content starts here

Global pages and Ingres

» close window

The Question is:

 
My database will not come up after increasing
the number of GBLPAGES to be used.  I am using
Ingres 6.4 DBMS and have the following:
 
VAX/VMS V6.2 7630 (1 Gig Memory):
 
GBLPAGES          750000    15000       512   4194176   Pages
GBLSECTIONS         3072      250        60      4095   Sections
GBLPAGFIL         150000     1024       128   4194176   Pages
 
591 Global Sections Used,  198722/551278 Global Pages Used/Unused
 
 
I use the run command to start a detached
process.  I want to start three DBMS servers
that will use a single shared_cahce to hold
the DBMS working pages.  I set the
/extent=150,000 (WSMAX=150,000)
/working_set=100,000
/maximum_working_set=80,000
(I read that the larges value for the
 last two is 64K, it gets truncated)
 
There is a switch for the DBMS to allowcate
shared_cache in global memory.  It is in
Ingres pages (4 VMS pages = 1 Ingres page)
 
/DMF=(/read_ahead=32, read_cnt=100,
      cache_size = 20000)
 
This should set aside 92,800 VMS GBLPAGES.
 
?Question?
1) Is the global pages (section, files) at
all dependent on the Working Set settings?
If so, how?
 
2) Using the above settings, the DBMS process
comes up running.  If I increase the
Cache_size=40000, the DBMS process does not
get created.  There should be enough memory
(GBL) correct?
 
3)Can you quickly show how GBLPAGES,
GBLSECTIONS, & GBLPAGFIL are related?
 
4) Is the account's process settings (WS, etc)
 that creates the detached independent of the
detached process if the above switches are used?
 
 


The Answer is :

 
    0: The Wizard strongly recommends contacting the folks at Ingres
    support for assistance with resolving an Ingres database problem.
 
 
    1: No. Working set sizes only control how much virtual memory may be
    in physical memory simultaneously for one process only.  Global pages
    are not charged against the working set.
 
 
    2: Not necessarily. Depending on the exact nature of the global cache
    (since the Wizard is not familiar with this data base, this is a best
    guess), it's likely that the global pages used must be contiguous.
 
    It is quite possible that even with 550000 free GBLPAGES, the largest
    contiguous block is smaller than 200000 -- much like disk storage,
    it is possible for global page tables to become fragmented. Use the
    lexical function F$GETSYI("CONTIG_GBLPAGES") to find out:
 
    	$ WRITE SYS$OUTPUT F$GETSYI("CONTIG_GBLPAGES")
    	142362
 
    If the cache is backed to the page file, the most likely explanation
    is that your GBLPAGFIL parameter is much too low.
 
 
    3: In short, they are not related.
 
    GBLSECTIONS controls how many global sections can exist on a system
    simultaneously. It is independent of the size of the sections. So a
    large number of small sections may take less GBLPAGES than a small
    number of large sections. The parameter is cheap, so aim for at least
    30% free at all times. In practice free sections are usually higher
    and, in the wizard's experience, problems due to insufficient global
    sections are very rare.
 
    GBLPAGES is the total number of pages in all global sections. In
    addition to considering the raw number of pages, you should also
    consider fragmentation, especially when dealing with large sections.
    There is also the issue of life time. Remember that deleting or
    replacing a global section is not necessarily synchronous, so, if you
    need to replace a particular section frequently, make sure you have
    sufficient pages for 2, or maybe even 3 CONTIGUOUS copies of the same
    section. In your case you want a section of around 180000 pages. If you
    want to be able to recreate it, I'd suggest allocating 600000 (or more)
    pages for that purpose. GBLPAGES are cheap, but not free. They cost 4
    bytes of physically resident memory for every 128 pages, so your 600000
    pages would cost 12.5Kbytes. Problems due to insufficient absolute or
    contiguous GBLPAGES are relatively common. Aim for at least 20% free at
    all times. When playing with large sections, go for 50-60% free. You
    can determine your peak usage from AUTOGEN:
 
    	$ @SYS$UPDATE:AUTOGEN SAVPARAMS SAVPARAMS	! Record feedback data
    	$ SEARCH SYS$SYSTEM:AGEN$FEEDBACK.DAT GBLPAGES
    	GBLPAGES_CUR = 250000
    	GBLPAGES_PEAK = 107262
 
    GBLPAGFIL is a "blade guard". Whenever virtual memory is created, it
    must be given a "backing store" (that is, somewhere to put the pages
    when they are not in physical memory). For a global section, the store
    may be an ordinary disk file, but it may also be the paging file. The
    choice is made when the section is created. Since the lifetime of a
    particular global section may be longer than that of the process which
    creates it, it is not possible to "charge" the page file usage of a page
    file backed global section against the quota of the creator. On the
    other hand, the pagefile usage must have some sort of quota, otherwise
    a nonprivileged user could consume all available pagefile space simply
    by creating a large enough global section. So, GBLPAGFIL is like a
    system wide PGFLQUOTA for pagefile backed global sections. In setting
    it remember that RMS global buffers must be counted, and the general
    rule of thumb is to keep pagefiles at least 50% free. If your section
    is pagefile backed (which is likely), you need to allocate at least
    200000 pages for it, plus any other requirements. Also remember that if
    section replacement is asynchronous, you may need allocation for 2.
    So, I'd suggest you start with GBLPAGFIL=550000. Just make sure you
    have sufficient page file that a user accidently or deliberately
    consuming all of GBLPAGFIL won't deplete your page file enough to hang
    your system. You can check your remaining of GBLPAGFIL in SDA:
 
    	$ ANALYZE/SYSTEM
    	EXAMINE MMG$GL_GBLPAGFIL
        MMG$GL_GBLPAGFIL:  00006A01   ".j.."
        EVALUATE 00006A01			! convert to decimal
        Hex = 00006A01   Decimal = 27137
 
    As of OpenVMS V7.1, GBLPAGFIL is a dynamic parameter. On prior versions
    changing it required a reboot (though you may be able to locate hacks
    around the web with which you could raise it dynamically, just don't
    complain to the wizard if you crash your system using it!).
 
 
    4: Given sufficient privilege (IMPERSONATE, as the DETACH privilege
    is now known) you may give a detached process a higher quota than the
    creator process. Without privilege, you are limited to the quotas of
    the creator.
 
    The Wizard suspects that your problem is simply that the GBLPAGFIL
    setting is too low.
 
 

answer written or last revised on ( 23-OCT-1998 )

» close window