Environment
Novell NetWare 6.5
Situation
The server would show Cache Memory Allocator errors all over the
server console screen when performing a tape backup. This problem
appeared with HP Data Protector software after a code change that
increased the size of the transfer buffer from 64k to either 128 or
256k. This problem could happen with any tape software if the
buffer size were changed. Some solutions offer this as a selectable
option to the user. In this case, the change was made to HP's code.
This problem was duplicated in house at Novell using other Vendor's
software as well as HP's. It was NWPA.NLM that would leak the
memory away on the server. NWPA is using Alloc() to allocate
linear-equals-physical memory. Alloc() handles large requests >=
64K differently then other requests and does not cache or
reuse memory nodes once they are freed. The memory allocated by
NWPA is being freed by the storage device at interrupt time.
Memory freed at interrupt time (Free()) is placed on a special
cross-processor (X) free list which is not freed until the garbage
collector runs. Smaller memory allocations will actually try to use
nodes from the X processor list if needed. The garbage collector
was not running fast enough to keep up with the larger memory
demand from nwpa.nlm due to the larger buffers being passed in to
the nwpa passthru functionality.
Resolution
07/03/2007 11:36
AM 1,344,184
server.exe or later.
This server.exe should be in sp7 for Netware 6.5