Home | Previous Page | Next Page   Configuring and Monitoring Dynamic Server > Configuration Parameters > BUFFERPOOL >

The buffers Field

onconfig.std value
UNIX: buffers=5000 Windows: buffers=2000
syntax
buffers=num_buffers
units
Number of buffers. Each buffer is the size of the operating system page.
range of values
For 32-bit platform on UNIX:
with page size equal to 2048 bytes:
100 through 1,843,200 buffers
(1843200 = 1800 * 1024)

with page size equal to 4096 bytes:
100 through 921,600 buffers
(921,600 = ((1800 * 1024)/4096) * 2048 )

For 32-bit platform on Windows:
100 through 524,288 buffers (524,288 = 512 * 1024)

For 64-bit platforms: 100 through 231-1 buffers
(For the actual value for your 64-bit platform, see your machine notes. The maximum number of buffers on Solaris is 536,870,912.)

The buffers value specifies the maximum number of shared-memory buffers that the database server user threads have available for disk I/O on behalf of client applications. Therefore, the number of buffers that the database server requires depends on the applications. For example, if the database server accesses 15 percent of the application data 90 percent of the time, you need to allocate enough buffers to hold that 15 percent. Increasing the number of buffers can improve system performance.

Recommendation: Set the buffer space before you calculate other shared-memory parameters. On systems with a large amount of physical memory (4 GB or more), buffer space can be as much as 90 percent of physical memory.

Buffers and Read-Ahead

If you also want to perform read-ahead, increase the value of buffers. After you have configured all other shared-memory parameters, if you find that you can afford to increase the size of shared memory, increase the value of buffers until buffer space reaches the recommended 25 percent maximum.

Buffers and Smart Large Objects

If your databases contain smart large objects, you need to consider them when you calculate the value for buffers, because smart large objects are stored in the default page size buffer pool. If your applications frequently access smart large objects that are 2 kilobytes or 4 kilobytes in size, use the buffer pool to keep them in memory longer.

Use the following formula to increase the value of buffers:

Additional_BUFFERS = numcur_open_lo *
                     (lo_userdata / pagesize)

numcur_open_lo
is the number of concurrently opened smart large objects that you can obtain from the onstat -g smb fdd option.
lo_userdata
is the number of bytes of smart-large-object data that you want to buffer.
pagesize
is the page size in bytes for the database server.

As a general rule, try to have enough buffers to hold two smart-large-object pages for each concurrently open smart large object. (The additional page is available for read-ahead purposes).

If the system uses lightweight I/O (as set by the access-mode constant LO_NOBUFFER), the system allocates the buffers from shared memory and does not store the smart large objects in the buffer pool. For information on access-mode flags and constants, see the chapter on "Working with Smart Large Objects of the Universal Data Option" in the IBM Informix ESQL/C Programmer's Manual.

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