Consultor Eletrônico



Kbase P3249: -B and the system buffer pool on Unix.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   07/10/2003
Status: Unverified

GOAL:

-B and the system buffer pool on Unix.

FACT(s) (Environment):

UNIX

FIX:

The -B parameter is used to preallocate space in memory. Within this space Progress creates temporary storage areas so that copies of database blocks can be maintained as memory-resident, thus reducing I/O.

The size of the database buffer pool is set by the -B (Blocks in Database Buffers) startup parameter. The maximum is 500,000 blocks. The table below lists the maximum size of the buffer pool, depending on database blocksize:

Maximum Buffer Pool Size

Block Size Maximum Buffer Pool Size
1024 bytes (1K) 500 MB
2048 bytes (2K) 1 GB
4096 bytes (4K) 2 GB
8192 bytes (8K) 4 GB

The space in memory defined by the -B parameter isn't taken from the system buffer pool, the space defined by e.g. the dbc_max_pct kernel parameter on HP-UX 11. Instead, the -B space comes from what would otherwise be process space. Correspondingly, the size of the operating system buffer pool should be decreased to compensate for the additional memory allocated to Progress.

To determine the efficiency of database buffer activity generally, check the Buffer Hits field of the PROMON Activity option. For best performance, increase the Blocks in Database Buffers (-B) parameter until the buffer hits percentage exceeds 95 percent, or until the system starts paging.

Progress does have to use the system buffer pool when doing disk I/O. If this results in performance issues, however, the -directio parameter can be set, so that all files are opened in unbuffered mode, which enables Progress to use an I/O technique that bypasses the operating system buffer pool and transfers data directly from a buffer to disk. This technique has several advantages over buffered reads and writes such as avoiding the overhead of maintaining the operating system buffer pool and eliminating competition for operating system buffers between Progress programs and other programs. The operating system buffer-pool algorithms are designed for efficient sequential file access; the Progress buffer-pool algorithms are more efficient for access to a Progress database.

If -directio is used, increase -B, since Progress I/O then does not pass through the operating system buffer pool. Also, the size of the operating system buffer pool should again be decreased to compensate for the additional memory allocated to Progress.