Skip to main contentIBM dmctop Wiki

IO / Bufferpools

Purpose

Buffer pool hit ratios are one of the most fundamental metrics for measuring database performance. They provide an important overall measure of how effectively the system is exploiting memory to avoid disk IO. This view shows hit ratios for all buffer pools and for various data types.

Screenshot

image

Metric shown

Gauge


Data hit%

= DATA_HIT_NUMERATOR / DATA_HIT_DENOMINATOR

Source:

DATA_HIT_DENOMINATOR = MON_GET_BUFFERPOOL(NULL, #MEMBER#).SUM(POOL_DATA_L_READS + POOL_TEMP_DATA_L_READS)


Idx hit%

= IDX_HIT_NUMERATOR / IDX_HIT_DENOMINATOR

Source:

IDX_HIT_DENOMINATOR = MON_GET_BUFFERPOOL(NULL, #MEMBER#).SUM(POOL_INDEX_L_READS + POOL_TEMP_INDEX_L_READS)


Col hit%

Column-organized page hit ratio. Formulas for calculating buffer pool hit ratios

= COL_HIT_NUMERATOR / COL_HIT_DENOMINATOR

Source:

COL_HIT_DENOMINATOR = MON_GET_BUFFERPOOL(NULL, #MEMBER#).SUM(POOL_COL_L_READS + POOL_TEMP_COL_L_READS)


Temp hit%

Page hit ratio in temporary table spaces.

= TEMP_HIT_NUMERATOR / TEMP_HIT_DENOMINATOR

Source:


XML hit%

XML storage object (XDA) page hit ratio. Formulas for calculating buffer pool hit ratios

= XDA_HIT_NUMERATOR / XDA_HIT_DENOMINATOR

Source:

XDA_HIT_DENOMINATOR = MON_GET_BUFFERPOOL(NULL, #MEMBER#).SUM(POOL_XDA_L_READS + POOL_TEMP_XDA_L_READS)


All hit%

= ALL_HIT_RATIO_NUMERATOR / ALL_HIT_RATIO_DENOMINATOR

Source:

Grid


Logical reads

The number of pages read from the local buffer pool (logical).


Physical reads

The number of pages read in from the table space containers (physical).


BP writes

The number of times a buffer pool page was physically written to disk.

Source: MON_GET_BUFFERPOOL(NULL, #MEMBER#).(SUM(POOL_DATA_WRITES) + SUM(POOL_INDEX_WRITES) + SUM(POOL_XDA_WRITES) + SUM(POOL_COL_WRITES))


Direct writes

The number of write operations that do not use the buffer pool.

Source: MON_GET_BUFFERPOOL(NULL, #MEMBER#).SUM(DIRECT_WRITES)


IO type

The ratio of different type of page read and write.

= <IO_TYPE_R / IO_TOTAL>r | <IO_TYPE_W / IO_TOTAL >w | <IO_TYPE_D / IO_TOTAL >d | <IO_TYPE_I / IO_TOTAL >i | <IO_TYPE_T / IO_TOTAL >t IO_TOTAL = IO_TYPE_R + IO_TYPE_W + IO_TYPE_D + IO_TYPE_I + IO_TYPE_T

Source:

IO_TYPE_D = MON_GET_BUFFERPOOL(NULL, #MEMBER#).SUM(POOL_DATA_L_READS)

IO_TYPE_I = MON_GET_BUFFERPOOL(NULL, #MEMBER#).SUM(POOL_INDEX_L_READS)

Table


Bufferpool name

The buffer pool identifier for the buffer pool that is being monitored.

Source: MON_GET_BUFFERPOOL(”, #MEMBER#).BP_NAME


Actual l_reads

The number of pages read by agents from the buffer pool (logical).


Actual p_reads

The number of pages read in from the table space containers (physical).


Hit ratio %

= (LBP_PAGES_FOUND - ASYNC_LBP_PAGES_FOUND) / L_READS

Source:


Async reads %

The percentage of pages which have been asynchronously read from the table space containers (physical).

= ASYNC_READS / P_READS

Source:


Actual bp writes

The number of times a buffer pool page was physically written to disk.

Source: MON_GET_BUFFERPOOL(”, #MEMBER#).(SUM(POOL_DATA_WRITES) + SUM(POOL_INDEX_WRITES) + SUM(POOL_XDA_WRITES) + SUM(POOL_COL_WRITES))


Actual direct writes

The number of write operations that do not use the buffer pool.

Source: MON_GET_BUFFERPOOL(”, #MEMBER#).SUM(DIRECT_WRITES)


Actual a_reads

The number of pages which have been asynchronously read from the table space containers (physical).


Async readms

The average time spent reading in data and index pages from the table space containers (physical) by asynchronous engine dispatchable units (EDUs) for all types of table spaces.

= ASYNC_READ_TIME / ASYNC_READS

Source:

ASYNC_READ_TIME = MON_GET_BUFFERPOOL(”, #MEMBER#).SUM(POOL_ASYNC_READ_TIME)


Actual a_writes

The number of times a page was physically written to disk by either an asynchronous page cleaner, or a prefetcher.


Async wrtms

The average elapsed time for each asynchronous write to complete.

= ASYNC_WRITE_TIME / ASYNC_WRITES

Source:

ASYNC_WRITE_TIME = MON_GET_BUFFERPOOL(”, #MEMBER#).SUM(POOL_ASYNC_WRITE_TIME)


Async wrt %

The percentage of times a page was physically written to disk by either an asynchronous page cleaner, or a prefetcher.

= ASYNC_WRITES / (POOL_WRITES + DIRECT_WRITES)

Source:

POOL_WRITES = MON_GET_BUFFERPOOL(”, #MEMBER#).(SUM(POOL_DATA_WRITES) + SUM(POOL_INDEX_WRITES) + SUM(POOL_XDA_WRITES) + SUM(POOL_COL_WRITES))

DIRECT_WRITES = MON_GET_BUFFERPOOL(NULL, #MEMBER#).SUM(DIRECT_WRITES)


# of dbp

The number of buffer pool that is being monitored.

SELECT COUNT(*) AS NUMBER_OF_DBP
FROM TABLE(
MON_GET_BUFFERPOOL(
'',
#MEMBER#)) MGB
GROUP BY MGB.BP_NAME

Source: MON_GET_BUFFERPOOL(”, #MEMBER#).BP_NAME


Bp pages

The current buffer pool size.

Source: MON_GET_BUFFERPOOL(”, #MEMBER#).SUM(BP_CUR_BUFFSZ)


Files closed

The total number of database files closed.

Source: MON_GET_BUFFERPOOL(”, #MEMBER#).SUM(FILES_CLOSED)


Block IOs

The number of block I/O requests.

Source: MON_GET_BUFFERPOOL(”, #MEMBER#).SUM(BLOCK_IOS)


Pages blkIOs

The total number of pages read by block I/O into the block area of the buffer pool.

Source: MON_GET_BUFFERPOOL(”, #MEMBER#).SUM(PAGES_FROM_BLOCK_IOS)


Vectored IOs

The number of vectored I/O requests.

Source: MON_GET_BUFFERPOOL(”, #MEMBER#).SUM(VECTORED_IOS)


Pages vctIOs

The total number of pages read by vectored I/O into the page area of the buffer pool.

Source: MON_GET_BUFFERPOOL(”, #MEMBER#).SUM(PAGES_FROM_VECTORED_IOS)


Victim pages

The number of times an agent did not have a preselected victim buffer available.

Source: MON_GET_BUFFERPOOL(”, #MEMBER#).SUM(POOL_NO_VICTIM_BUFFER)


Unread pref pages

The number of pages that the prefetcher read into the bufferpool that were never used.

Source: MON_GET_BUFFERPOOL(”, #MEMBER#).SUM(UNREAD_PREFETCH_PAGES)


%unread pref pages

The percentage of pages that the prefetcher read into the bufferpool that were never used.

= UNREAD_PREFETCH_PAGES / ASYNC_WRITES

Source:

UNREAD_PREFETCH_PAGES = MON_GET_BUFFERPOOL(”, #MEMBER#).SUM(UNREAD_PREFETCH_PAGES)


Xda l_reads

The number of pages for XML storage objects (XDAs) read from the buffer pool (logical).

Source: MON_GET_BUFFERPOOL(”, #MEMBER#).(SUM(POOL_XDA_L_READS) + SUM(POOL_TEMP_XDA_L_READS))


Xda p_reads

The number of pages for XML storage objects (XDAs) which have read from the table space containers (physical).

Source: MON_GET_BUFFERPOOL(”, #MEMBER#).(SUM(POOL_XDA_P_READS) + SUM(POOL_TEMP_XDA_P_READS))


Xda writes

The number of times a buffer pool data page for an XML storage object (XDA) was physically written to disk.

Source: MON_GET_BUFFERPOOL(”, #MEMBER#).SUM(POOL_XDA_WRITES)


Avg direct reads

The average number of read operations that do not use the buffer pool per request.

= DIRECT_READS / DIRECT_READ_REQS

Source:

DIRECT_READS = MON_GET_BUFFERPOOL(”, #MEMBER#).SUM(DIRECT_READS)

DIRECT_READ_REQS = MON_GET_BUFFERPOOL(”, #MEMBER#).SUM(DIRECT_READ_REQS)