Network buffer pools

The sizes of buffers for TCP/IP connections affect memory and CPU utilization. Sizing these buffers to accommodate a typical request can improve CPU utilization by eliminating the need to break up requests into multiple messages.

However, you must use this capability with care; the database server dynamically allocates buffers of the indicated sizes for active connections. Unless you carefully size buffers, they can use large amounts of memory. For details on how to size network buffers, see Network buffer size.

The database server dynamically allocates network buffers from the global memory pool for request messages from clients. After the database server processes client requests, it returns buffers to a common network buffer pool that is shared among sessions that use SOCTCP, IPCSTR, or TLITCP network connections.

This common network buffer pool provides the following advantages:
  • Prevents frequent allocations and deallocations from the global memory pool
  • Uses fewer CPU resources to allocate and deallocate network buffers to and from the common network buffer pool for each network transfer
  • Reduces contention for allocation and deallocation of shared memory

The free network buffer pool can grow during peak activity periods. To prevent large amounts of unused memory from remaining in these network buffer pools when network activity is no longer high, the database server returns free buffers when the number of free buffers reaches specific thresholds.

The database server provides the following features to further reduce the allocation and deallocation of and contention for the free network buffers:
  • A private free network buffer pool for each session to prevent frequent allocations and deallocations of network buffers from the common network buffer pool or from the global memory pool in shared memory
  • Capability to specify a larger than 4-kilobyte buffer size to receive network packets or messages from clients
As the system administrator, you can control the free buffer thresholds and the size of each buffer with the following methods:
  • NETTYPE configuration parameter
  • IFX_NETBUF_PVTPOOL_SIZE environment variable
  • IFX_NETBUF_SIZE environment variable and b (client buffer size) option in the sqlhosts information