|
From: Phillip S. <ps...@cf...> - 2001-10-14 23:10:18
|
Who was it that recently did some work with the cache manager code? Are
you still working on it? The Cc code needs to be reworked to use mapped
section views like NT does instead of CACHE_SEGMENTs. Currently, trying to
copy a file on a machine with 8 megs of ram causes the cache to use all
available memory, run out, and then the system locks up. This is due to
several reasons, the first being that the cache does not currently have any
mechanism to prevent it from growing without bound. The cache needs to map
views of the files to be cached into the cache working set, and the working
set and page fault handling code will keep the cache working set from
growing without bound, as well as reclaiming cache memory. The other bug
in the current code is in cc/view.c in CcRosGetCacheSegment, which does this:
Status = MmCreateVirtualMapping(NULL,
current->BaseAddress + (i * PAGESIZE),
PAGE_READWRITE,
(ULONG)MmAllocPage(0));
Note that the call to MmAllocPage is not checked for failure. On my test
system, it fails when memory runs out, and returns 0, which then gets
passed to MmCreateVirtualMapping for the physical backing page. If noone
is working on this, I guess I'll go for it, but if someone already is, let
me know.
====================================================
= To remove yourself from this mailing list, go to =
= http://www.reactos.com/home/mailing.html =
====================================================
|