Jim C. Nasby wrote:
On Mon, Mar 20, 2006 at 02:15:22PM -0500, Vivek Khera wrote:
I think FreeBSD has a hard upper limit on the total ram it will use
for disk cache. I haven't been able to get reliable, irrefutable,
answers about it, though.
It does not. Any memory in the inactive queue is effectively your 'disk
cache'. Pages start out in the active queue, and if they aren't used
fairly frequently they will move into the inactive queue. From there
they will be moved to the cache queue, but only if the cache queue falls
below a certain threshold, because in order to go into the cache queue
the page must be marked clean, possibly incurring a write to disk. AFAIK
pages only go into the free queue if they have been completely released
by all objects that were referencing them, so it's theoretically
posisble for that queue to go to 0.
Exactly.
The so-called limit (controllable via various sysctl's) is on the amount
of memory used for kvm mapped pages, not cached pages, i.e - its a
subset of the cached pages that are set up for immediate access (the
others require merely to be shifted from the 'Inactive' queue to this
one before they can be operated on - a relatively cheap operation).
So its really all about accounting, in a sense - whether pages end up in
the 'Buf' or 'Inactive' queue, they are still cached!
Cheers
Mark