Monitor buffers
You can obtain both statistics on buffer use and information about specific buffers.
The statistical information includes the percentage of data writes that are cached to buffers and the number of times that threads were required wait to obtain a buffer. The percentage of writes that are cached is an important measure of performance. The number of waits for buffers gives a measure of system concurrency.
Information about specific buffers includes a listing of all the buffers in shared memory that are held by a thread. You can use this information to track the status of a particular buffer. For example, you can determine whether another thread is waiting for the buffer.
You can obtain statistics that relate to buffer availability and information about the buffers in each LRU queue. The statistical information includes the number of times that the database server attempted to exceed the maximum number of buffers and the number of writes to disk (categorized by the event that caused the buffers to flush). These statistics help you determine if the number of buffers is appropriate. Information about the buffers in each LRU queue consists of the length of the queue and the percentage of the buffers in the queue that were modified.
You can obtain information about buffer pool activity from the onstat utility, the sysprofile SMI table.
onstat commands to monitor buffers
You can use the following onstat commands to monitor buffers:
- onstat -g buf
- Run the onstat -g buf command to obtain statistics
about how active and efficient each buffer is. The following types
of statistics are shown:
- Page reads and writes
- Caching percentages
- Waits for buffers
- Flushes
- Extensions of the buffer pool
- Buffer pool segments
- Fast cache
- onstat -B
- Run the onstat -B command to obtain information
about all of the buffers that are not on the free-list, including:
- The shared memory address of the buffer
- The address of the thread that currently holds the buffer
- The address of the first thread that is waiting for each buffer
- Information about buffer pools
- onstat -b
- Run the onstat -b command to obtain the following
information about each buffer:
- Address of each buffer that is currently held by a thread
- Page numbers for the page that is held in the buffer
- Type of page that is held in the buffer (for example, data page, tblspace page, and so on)
- Type of lock that is placed on the buffer (exclusive or shared)
- Address of the thread that is holding the buffer
- Address of the first thread that is waiting for each buffer
- Information about buffer pools
You can compare the addresses of the user threads to the addresses that are shown in the onstat -u output to obtain the session ID number.
- onstat -X
- Run the onstat -X command to obtain the same information as for onstat -b, along with the complete list of all threads that are waiting for buffers, not just the first waiting thread.
- onstat -R
- Run the onstat -R command to show information about buffer pools, the number of buffers in each LRU queue, and the number and percentage of the buffers that are modified or free.
- onstat -F
- Run the onstat-F command to obtain a count
by write type of the writes that are performed and the following information
about the page cleaners:
- Page-cleaner number
- Page-cleaner shared-memory address
- Current state of the page cleaner
- LRU queue to which the page cleaner was assigned
The sysprofile SMI table
- bufreads
- Number of reads from buffers
- bufwrites
- Number of writes to buffers
- buffwts
- Number of times that any thread was required to wait for a buffer
- chunkwrites
- Number of chunk writes
- dskreads
- Number of reads from disk
- dskwrites
- Number of writes to disk
- fgwrites
- Number of foreground writes
- lruwrites
- Number of LRU writes