Microsoft KB Archive/69746

Usage of Big Buffers in OS/2 LAN Manager Version 2.00 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.

  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.   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$).   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).   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.   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.   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. 