Hi,
In simple terms, the ARC is divided into a MRU and MFU side.
       target size (c) = target MRU size (p) + target MFU size (c-p)

On Solaris, to get from the MRU to the MFU side, the block must be
read at least once in 62.5 milliseconds.  For pure read-once workloads,
the data won't to the MFU side and the ARC will behave exactly like an
(adaptable) MRU cache.
Richard,
I am looking at the code that moves a buffer from MRU to MFU,
and as I read it, if the block is read and the time is greater than
62 milliseconds, it moves from MRU to MFU (lines ~2256 to ~2265
in arc.c).  Also, I have a program that reads the same block once every
5 seconds, and on a relatively idle machine, I can find the block in the
MFU, not the MRU (using mdb). If the block is read again in less than 62 milliseconds, it stays in the MRU.
max

_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to