Group Buffer Pool - Changes by PH13045

Level setting:

A Db2 group buffer pool (GBP) consist of two parts:

1) Directory entries

2) Data entries

For each data entry there must be an associated directory entry in the GBP.

A directory entry can exist without a data entry in the GBP.

Directory entries are needed for the cross-invalidation process in the primary GBP. The base for this cross-invalidation is the usage of IXLCACHE with registered interest (e.g. REGUSER=YES) by each member.

For the secondary GBP Db2 does not register its interest for a page, otherwise the structure of primary and secondary GBP is the same.


Data entry needs are dependent on the GBPCACHE attribute of the GBP (global) or the page set (specific setting): NONE, CHANGED, ALL and SYSTEM (which is limited to LOB objects).

A data entry is the equivalent of a page in the local buffer pool.

Consider that for e.g. 8K buffer pools a factor 2 is visible in the displays.


DSNB759I  DB2B     NUMBER OF DIRECTORY ENTRIES             = 1730

               NUMBER OF DATA PAGES                    = 345

XCF shows (D XCF,STR,STRNAME=gbp_name):

  ENTRY COUNT:           1730                           

  ELEMENT COUNT:          691                           

  ENTRY:ELEMENT RATIO:           5 :      2             

Factor 4 or 8 applies for 16K or 32K buffer pools,


The relation between directory entries and data entries is fixed by the RATIO parameter in ALTER GBPOOL.

Directory entries and data entries together are ~equal to the current size of the GBP from XCF specification point of view (MINSIZE, INITSIZE, SIZE parameters). As the size of a directory entry is dependent on e.g. CFCC level or degree of sharing or ..., the directory entry is variable in size.

Therefore, the final calculation of needed directory entries and data entries based on RATIO and size specification in CFRM policy can sometimes be difficult.

To help customers for skew in directory entries versus data entries due to workload or miscalculation, XCF offers ALLOWAUTOALT specification in the GBP definition.

One function of ALLOWAUTOALT is to adjust the RATIO dynamically based on needs.



With above APAR two changes are introduced:

1) The default for the RATIO is changed from 5 to 10.

If objects are GBP dependent e.g. page set p-lock of IX, Db2 registers the page during read from DASD into local buffer pool. This higher default value is in line with such processing, which normally dominates workloads.

2) The upper limit of the RATIO can now be 1024. Consider that ALLOWAUTOALT already today adjusts to higher values than 255.


The messages DSNB800I and DSNDB802I are changed to reflect both changes.


My recommendations:

Always avoid running into a situation, in which directory entries are reclaimed: This means directory entries are already used and must be freed. This freeing can result into cast-out processes e.g. if the data entry, which is administrated by this directory entry, is not on DASD, it must go to DASD before the directory entry can be reused.

Having the wrong RATIO and ALLOWAUTOALT(NO) is the base for such situations.

It is better to use the correct RATIO instead of ALLOWAUTOALT(YES), because the latter has some delay in its reaction due to good reasons: E.g. changing the RATIO up and down every second is probably not a good approach.

The number of adequate directory entries can be calculated by the summation of all associated local buffer pool pages and the data entries in the GBP.

If the number of directory entries is not adequate, DSNB787I RECLAIMS FOR DIRECTORY ENTRIES can be used to monitor it.

The number of data entries is more difficult to adjust, but a good start is to look periodically at DSNB786I CHANGED PAGES SNAPSHOT VALUE. Hitting the wall of data entries is indicated by DSNB319A and DSNB325A: This should be avoided as possible. Although sometimes it is unavoidable due to heavy write activity to the GBP triggered by e.g. batch jobs.

Pages are written to the GBP in case of IMMEDWRITE=YES, COMMIT, system checkpoint or if local buffer pool thresholds are hit, e.g. (V)-DWQT.

Consider that Db2 11 for z/OS introduces GBP write around protocol, which can relief such GBP full situations, see message DSNB777I for the monitoring of this functionality.

Views: 736

Add a Comment

You need to be a member of The World of DB2 to add comments!

Join The World of DB2

Comment by Peter Hartmann on July 31, 2019 at 14:44

Hi Joe

Yes correct, I cut down my output to show only the factor of ~2 between

NUMBER OF DATA PAGES                    = 345


  ELEMENT COUNT:          691       

691/345 =  2,00289 ...

And my output was based on an older z/OS level. 

Comment by joe watson on July 31, 2019 at 14:35

Good info.  Thanks.

My XCF display looks a bit different than what you show.  The closest I see referring to entry and element counts is below.  I assume that is equivalent?

SPACE USAGE     IN-USE       TOTAL    %     CHANGED      %

 ENTRIES:             317             29135      1       317                 1
 ELEMENTS:         317               3642      8       317                 8

Bringing Db2 enthusiasts together virtually. Expert or novice, distributed or mainframe, this is the place for everything DB2.


Introducing IBM Db2 for z/OS Developer Extension for Microsoft Visual Studio Code

Started by Calene Janacek in Application Development and DB2 Jul 30. 0 Replies

We are excited to announce that the first iteration of IBM Db2 for z/OS Developer Extension is available now as a free downloadable extension in the…Continue

QMF Governor

Started by Maitena Gallastegi Ginea in Application Development and DB2. Last reply by Maitena Gallastegi Ginea Jul 30. 4 Replies

Hi,We are using QMF Governor to limit the QMF queries of users.We have configured correctly and it is working OK. We want to get statistics of those queries canceled by QMF Governor but we are not able to discover where that information is stored.…Continue

© 2020   Created by Surekha Parekh.   Powered by

Badges  |  Report an Issue  |  Terms of Service