19.06.2013 Views

DB2 UDB for z/OS Version 8 Performance Topics - IBM Redbooks

DB2 UDB for z/OS Version 8 Performance Topics - IBM Redbooks

DB2 UDB for z/OS Version 8 Performance Topics - IBM Redbooks

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Attention:<br />

4.2.1 The <strong>DB2</strong> pools<br />

LOBs use data spaces with versions prior to V8, and go above the bar in the DBM1<br />

address space with <strong>DB2</strong> V8, so they are not influential with respect to VSCR.<br />

If you were using data spaces (max 8 M pages each), and have allocated their buffer pools<br />

and global dynamic statements cache (DSC) instead of below the bar in the DBM1<br />

address space, then the VSCR would be less.<br />

If you were using hiper pools (max 8 GB total) to work as cache <strong>for</strong> your virtual buffer pools,<br />

then the VSCR would be less.<br />

The GETMAIN and FREEMAIN processes to acquire and release virtual storage in z/<strong>OS</strong> can<br />

be quite expensive in terms of instructions. So, <strong>DB2</strong> tends to GETMAIN large blocks of<br />

storage from z/<strong>OS</strong> and then manage the sub-allocation and usage directly.<br />

<strong>DB2</strong> maintains two main types of storage pools:<br />

► Stack storage (SKB): Used <strong>for</strong> very active thread-related storage.<br />

► Getmained block (GMB) storage: Used <strong>for</strong> specific purposes such as buffer pools,<br />

compression dictionaries, and so on. With <strong>DB2</strong> V7 this is generally the largest user of<br />

storage below the bar in the DBM1 address space. Storage in the GMB pool includes:<br />

– Buffer pools and buffer pool control blocks<br />

– EDM pool<br />

– Compression dictionaries<br />

– Data space lookaside buffers (V7)<br />

– Data space buffer pool control blocks (V7)<br />

– Hiper pool control blocks (V7)<br />

Pools can also be fixed pools, in which the storage is sub-allocated into the same length<br />

blocks and optimized <strong>for</strong> per<strong>for</strong>mance or variable pools, which are general use pools of<br />

storage, sub-allocated into variable length blocks.<br />

Some storage pools are global and shared by multiple threads, <strong>for</strong> example buffer pools and<br />

the EDM pool. In these pools fragmentation is generally smaller, however contention can<br />

sometimes be a problem. While other types of storage are thread-related and only used by a<br />

single thread, <strong>for</strong> example, stack, storage and variable pools. In these other types of pools,<br />

fragmentation is a bigger problem but contention is much lower. Generally the largest<br />

contributors to virtual storage usage are GETMAINed and variable pools; however, the trend<br />

in the last few years has been toward growing usage of stack, thread-related, and storage.<br />

We now examine what has changed with <strong>DB2</strong> V8 in terms of storage management.<br />

64-bit virtual buffer pool support<br />

The buffer pools are used by <strong>DB2</strong> to reduce disk accesses. With more and more data needed<br />

by the applications, larger buffer pools have become necessary. The 64-bit virtual addressing<br />

is seen as the third major step in the evolution of MVS in the last 30 years. The first step was<br />

the transition from MVS/370 (24-bit) to MVS/XA (31-bit). The second step was the<br />

transition to MVS/ESA (including data spaces and hiper pools).<br />

<strong>DB2</strong> V7 supported buffer pools in data spaces and hiperpools. They both facilitated larger<br />

buffer pools. They each had their advantages and disadvantages. We could not do I/O directly<br />

Chapter 4. <strong>DB2</strong> subsystem per<strong>for</strong>mance 141

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!