DB2 very efficiently manages data in large buffer pools. To
search for data in a large buffer pool does not consume any more resources than
searching in a smaller buffer pool. With this in mind, do not skimp on
allocating memory to your DB2 buffer pools.
So, just how big should you make each buffer pool? One rule of thumb is to make the buffer pool
large enough to hold five minutes worth of randomly read pages during peak
processing time. To clarify, the goal is that once a page has been read from
disk into the buffer pool, the goal is to maintain it in memory for at least
five minutes. The idea is that a page, once read, is likely to be needed again
by another process during peak periods. Of course, your particular environment
may differ.
If you have metrics on how frequently a piece of data once read, will need to be read again, as well as how soon it will need to be read, you can use that to tinker with your buffer pool size and parameters to optimize buffer pool data residency.
But it can be difficult to know how much data is read at
peak processing time, as well as even knowing when peak processing time will
be, before an application is coded. You can gather estimates from the subject
matter experts, end users, and application designers, but it will just be
estimates. Over time you will have to
examine buffer pool usage and perhaps re-size your buffer pools, or move
objects from one buffer pool to another to improve performance.
Of course, you will want to make sure that you have not
allocated so much memory to DB2 buffer pools that the system starts paging. When
there is not enough real storage to back the buffer pool storage, paging
activity will cause performance to degrade.
What is paging? Paging occurs when the virtual storage
requirements for a buffer pool exceeds the real storage capacity for the z/OS
image. When this happens DB2 migrates the least recently used pages in the
buffer pool to auxiliary storage. If the data that was migrated is then
accessed those pages must be brought back into real storage from auxiliary
storage. When you detect that DB2 is paging you should either increase the
amount of real storage or decrease the size of your buffer pools.
Only DBAs or systems programmers should be allowed to add or
modify the size of DB2 buffer pools. And
these qualified professionals should be able to analyze the system to know the
amount of memory available (real and virtual), as well as the amount being used by other system
software and applications.
For a good overview of mainframe virtual storage consult the following link from IBM.