Hier die Q&A zum Thema aus der KBASE:
Title:
Q & A: The Use, Values and Settings of NSF Buffer Pool
Product: Lotus Domino > Lotus Domino Server > 5.x
Platform(s): Platform Independent
Document Number: 7002730 Date: 14.04.2003
Q: What is the NSF Buffer Pool?
A: The NSF Buffer Pool is one of many Domino shared memory pools. A Domino shared memory pool, by definition, is a chunk of memory that is pre-allocated and used system wide between Domino threads and/or processes. The NSF Buffer Pool is only Domino memory pool that is configurable by the user.
The NSF Buffer Pool is a section of memory dedicated to buffering I/O transfers between the NIF (Notes Index Facility) indexing functions and disk storage. By changing the size of NSF Buffer Pool you can control the size of the memory section used for this buffering. The number of users, size and number of views, and number of databases all affect how you the buffer pool size should be set.
Q: What are the minimum and maximum sizes of NSF Buffer Pool?
A: Minimum value: 4 MB
Maximum value:
In Release 5.0.4+, the NSFBufferPool has no effective size limit, though it is constrained by operating system limits.
In R5 up to 5.0.3, it is 1920 MB
R4.5x/4.6x, it is 508 MB
Q: How is NSF Buffer Pool size configured in R5?
A: By default:
The algorithm used to set the default size of the NSF Buffer Pool is hard-coded within R5 and works as follows:
1/8 of physical memory up to 32 MB
1/4 of physical memory from 32 MB to 128 MB
3/8 of physical memory from 128 MB to total amount
That is, take 1/8 of the first 32 MB, 1/4 of the next 96 MB, and 3/8 of everything beyond that.
For example, a server with 512 MB of RAM would allocate an NSF Buffer Pool Size of 172 MBytes
(32/8) + (96/4) + ((512-128)*3/8) = 172
- Directly via the NSF_BUFFER_POOL_SIZE notes.ini parameter:
Specified as number of bytes. 2 GB size limitation due to notes.ini variable limits.
(NOTES.INI variables are signed variables, and cannot be larger than 2 GB.)
- Directly via the NSF_BUFFER_POOL_SIZE_MB notes.ini parameter:
Specifies the size in megabytes, instead of bytes. Used to avoid the 2 GB limitation that exists if using the NSF_BUFFER_POOL_SIZE INI parameter.
- Indirectly via the PercentAvailSysResources notes.ini parameter:
Uses this parameter to inform Domino how much to adjust real RAM value in percentage terms before calculating the size of the NSF Buffer Pool. The adjusted RAM value will be used as input in the DEFAULT calculation specified above in determining the size of the NSF Buffer Pool.
Example:
If PercentAvailSysResources=50 and you have 4 GB of RAM; then 2 GB (50% of 4 GB) will be used in the default calculation of the NSF Buffer Pool size.
If both PercentAvailSysResources and NSF_BUFFER_POOL_SIZE are both set, then the NSF_BUFFER_POOL_SIZE value is used and PercentAvailSysResources is ignored.
NOTE: It is NOT recommended to use both parameters. The recommended method is to set NSF Buffer Pool size to use PercentAvailSysResources on Domino 5.0.4+ releases (where this new parameter was introduced) and NSF_BUFFER_POOL_SIZE prior to 5.0.4.
Q: When is manually setting the size of the NSF Buffer Pool recommended?
A: Tuning the size of the NSF Buffer Pool should not be necessary, EXCEPT on partitioned servers. On partitioned servers, allocating all of the memory normally (by default) reserved for the NSF Buffer Pool could result in problems by over-commiting memory.
For example, a computer with eight Domino partitioned servers could not allocate the default NSF Buffer Pool size per partition, as the memory allocated will exceed the RAM available and will therefore be using virtual memory (resulting in high paging activity). Administrators should use the PercentAvailSysResource INI parameter to share out equally the RAM across the number of partitions. For example, if you have two partitions, then for each partition PercentAvailSysResource would be set to 50 (percent). If you have four partitions, then it would be set to 25%, etc. Administrators can then modify the setting for each partition depending on the relative load. You would normally reach the limit. The way to determine if a buffer pool is too small (relative to the buffer pools of other partitioned servers on the same machine) is to compare the buffer pool hit rates. If the hit rates differ significantly (for example, 96% vs. 99%), then the server with the lower hit rate should have a larger buffer pool.
Additionally, there may be some cases where Domino does not require all of the memory in the NSF Buffer Pool, so administrators may wish to experiment with decreasing the amount of memory in the NSF Buffer Pool by setting one of the NOTES.INI variables. This allows the server to use the memory for other purposes (by other Domino shared memory pools, third party applications or the OS itself). In general, it is best to allow Domino to allocate memory for the NSF Buffer Pool by default.
On a NON-partitioned server, the NSF Buffer Pool should only be set manually if:
the server is running slowly due to inadequate available memory that shows up via OS statistics indicating a high level of paging activity, or
if Domino statistics indicate that the pool size is very much over or under configured.
Q: Why was the PercentAvailSysResources Notes.ini parameter introduced?
A: This is now the recommended way to configure the NSF buffer pool if running with Domino 5.0.4 or greater. PercentAvailSysResources was introduced in order to simplify the setting of the NSF Buffer Pool. In the past, a large number of customer issues were the result of incorrectly setting the NSF Buffer Pool (using the NSF_BUFFER_POOL_SIZE notes.ini parameter). For example, the value specified was done in kilobytes instead of bytes or the value was set to a very small or very large value by miscalculation. By using the PercentAvailSysResources parameter, the calculation for the customer is much simplified, leaving less room for error.
Other advantages are, when adding more memory to the server, with the newer PercentAvailSysResources variable there is no changes required to the Domino configuration to reset the size of the NSF Buffer Pool. It is done automatically because it is working in percentage terms. Additionally, when adding extra Domino partitions, the calculations are easier to carry out (with less room for error). For example, in a two Domino partition setup, typically PercentAvailSysResources would set to 50 (50%) for each partition. If a third partition were added, each partition would reset the PercentAvailSysResources value to 33 ( 100%/# of partitions). If you were setting the NSF Buffer Pool size via the NSF_BUFFER_POOL_SIZE parameter, the calculations would be more complex.
There still may be times when the NSF_BUFFER_POOL_SIZE INI parameter may recommended by Lotus support to obtain a quick and exact setting of the NSF_BUFFER_POOL, however, if support resolves the customer's issue, the NSF_BUFFER_POOL_SIZE parameter should be removed, and the PercentAvailSysResources setting should be configured to provide the same buffer pool size as when the NSF_BUFFER_POOL_SIZE parameter was enabled.
Q: What other Domino processes/configuration does the NSF buffer pool size affect?
A: The NSF Buffer Pool size is used as input in determining the default values of other functions These functions are not related in any way to the function of the NSF Buffer Pool. The NSF Buffer Pool is simply a value used in an algorithm to provide the default value.
- Server Task: Dbcache Max entries
Default setting NSFBuffer Pool Size in MB x 3
- Router Task: Router transfer and delivery threads
Default setting
Transfer Threads = MIN(25, (3 + (NSFBufferpoolsize in MB)/32)
Delivery Threads = MIN(25, (3 + (NSFBufferpoolsize in MB)/32)
NOTE: the above default settings can be overridden by other means.