Home | Previous Page | Next Page   Disk, Memory, and Process Management > Shared Memory > Resident Portion of Shared Memory >

Shared-Memory Buffer Pool

The buffer pool in the resident portion of shared memory contains buffers that store dbspace pages read from disk. The pool of buffers comprises the largest allocation of the resident portion of shared memory.

Figure 28 illustrates the shared-memory header and the buffer pool.

Figure 28. Shared-Memory Buffer Pool
begin figure description - The paragraphs that precede this figure describe the content of the figure. - end figure description

You use the BUFFERPOOL configuration parameter to specify information about a buffer pool, including the number of buffers in the buffer pool. To allocate the proper number of buffers, start with at least four buffers per user. For more than 500 users, the minimum requirement is 2000 buffers. Too few buffers can severely impact performance, so you must monitor the database server and tune the value of buffers to determine an acceptable value. For more information on tuning the number of buffers, see the IBM Informix Dynamic Server Performance Guide.

If a buffer pool for a non-default page size does not exist, the database server will automatically create a large-page buffer.

If you are creating a dbspace with a non-default page size, the dbspace must have a corresponding buffer pool. For example, if you create a dbspace with a page size of 6 kilobytes, you must create a buffer pool with a size of 6 kilobytes.

For more information on setting the BUFFERPOOL configuration parameter, see the IBM Informix Dynamic Server Administrator's Reference.

The status of the buffers is tracked through the buffer table. Within shared memory, buffers are organized into FIFO/LRU buffer queues. Buffer acquisition is managed through the use of latches, called mutexes, and lock-access information.

For a description of how LRU queues work, refer to FIFO/LRU Queues. For a description of mutexes, refer to Mutexes.

Buffer Overflow to the Virtual Portion

Because the maximum number of buffers in 64-bit addressing can be as large as 231-1, the resident portion of shared memory might not be able to hold all of the buffers in a large buffer pool. In this case, the virtual portion of database server shared memory might hold some of the buffers.

Buffer Size

Each buffer is the size of one database server page.

In general, the database server performs I/O in full-page units, the size of a buffer. The exceptions are I/O performed from big buffers, from blobspace buffers, or from lightweight I/O buffers. (See Big Buffers and Creation of Blobpage Buffers.) For information about when to use private buffers, see information about lightweight I/O operations in the IBM Informix Dynamic Server Performance Guide.

The onstat -b command displays information about the buffers. For information on onstat, see the IBM Informix Dynamic Server Administrator's Reference.

Home | [ Top of Page | Previous Page | Next Page | Contents | Index ]