ID Number: Q69746
2.00
OS/2
Summary:
The following information addresses some basic questions regarding
the usage of big buffers in OS/2 LAN Manager version 2.00.
1. What are big buffers?
Big buffers are 64K buffers used internally by OS/2 LAN Manager
version 2.00 to help improve the performance of certain types of
network requests.
2. Are big buffers used for reading, writing, or both?
Big buffers are used for both of these types of data transfers.
Additionally, a big buffer is used when a server is administered
remotely (always set NUMBIGBUF to at least 1 (one) if you intend to
share ADMIN$).
3. How do big buffers affect performance?
Big buffers are used for raw I/O data transfers. Thus, when
performing a large I/O data transfer, it is not necessary to attach
a server message block (SMB) header to each block (only the raw
data is needed). Additionally, the server normally negotiates
SIZWORKBUF size buffers (default is 4096). When specifying big
buffers, the server will negotiate these instead (thus allowing
larger contiguous blocks to be transferred).
4. What happens when the server runs out of big buffers?
Initially, the server will attempt to allocate another big buffer.
If this request is refused by OS/2, the server will use WORKBUFs
(as though no big buffers were specified). If no WORKBUFs are
available, the request is queued until a buffer becomes available.
Available fixed RAM is the only limit on how many big buffers the
server may dynamically allocate. Any dynamically allocated buffer
will be freed if it is not used for a reasonable period of time.
5. Can you set the number of big buffers too high and adversely
affect performance?
Yes, this is possible, but only from the perspective that you are
overcommitting your RAM and using the OS/2 swap file instead. This
is why dynamically allocated big buffers are freed after not being
used for a period of time, to keep the RAM free for more critical
application usages. Additionally, big buffers come from fixed RAM
(RAM that can be locked), which is limited and used by device
drivers, PM, and other system components.
Because the server will dynamically allocate big buffers and
because they may not be used often, the best strategy is to set
NUMBIGBUF within the range of 1 to 5 and then use bit 17 of
SRVHEURISTICS to control how long dynamically allocated big buffers
are held. NUMBIGBUF is really a low-water mark as opposed to a
high-water mark.
6. Why are big buffers NOT required when using HPFS386?
HPFS386 is server aware and manages all file I/O for the server.
Big buffers are only needed when you are not using HPFS386.
Therefore, you should set NUMBIGBUF to zero when HPFS386 is
installed.