> From: Erik Trimble [mailto:erik.trim...@oracle.com]
> 
> Using the standard c_max value of 80%, remember that this is 80% of the
> TOTAL system RAM, including that RAM normally dedicated to other
> purposes.  So long as the total amount of RAM you expect to dedicate to
> ARC usage (for all ZFS uses, not just dedup) is less than 4 times that
> of all other RAM consumption, you don't need to "overprovision".

Correct, usually you don't need to overprovision for the sake of ensuring
enough ram available for OS and processes.  But you do need to overprovision
25% if you want to increase the size of your usable ARC without reducing the
amount of ARC you currently have in the system being used to cache other
files etc.


> Any
> entry that is migrated back from L2ARC into ARC is considered "stale"
> data in the L2ARC, and thus, is no longer tracked in the ARC's reference
> table for L2ARC.

Good news.  I didn't know that.  I thought the L2ARC was still valid, even
if something was pulled back into ARC.

So there are two useful models:
(a) The upper bound:  The whole DDT is in ARC, and the whole L2ARC is filled
with average-size blocks.
or
(b) The lower bound:  The whole DDT is in L2ARC, and all the rest of the
L2ARC is filled with average-size blocks.  ARC requirements are based only
on L2ARC references.

The actual usage will be something between (a) and (b)...  And the actual is
probably closer to (b)

In my test system:
(a)  (upper bound)
On my test system I guess the OS and processes consume 1G.  (I'm making that
up without any reason.)
On my test system I guess I need 8G in the system to get reasonable
performance without dedup or L2ARC.  (Again, I'm just making that up.)
I need 7G for DDT and 
I have 748982 average-size blocks in L2ARC, which means 131820832 bytes =
125M or 0.1G for L2ARC
I really just need to plan for 7.1G ARC usage
Multiply by 5/4 and it means I need 8.875G system ram
My system needs to be built with at least 8G + 8.875G = 16.875G.

(b)  (lower bound)
On my test system I guess the OS and processes consume 1G.  (I'm making that
up without any reason.)
On my test system I guess I need 8G in the system to get reasonable
performance without dedup or L2ARC.  (Again, I'm just making that up.)
I need 0G for DDT  (because it's in L2ARC) and 
I need 3.4G ARC to hold all the L2ARC references, including the DDT in L2ARC
So I really just need to plan for 3.4G ARC for my L2ARC references.
Multiply by 5/4 and it means I need 4.25G system ram
My system needs to be built with at least 8G + 4.25G = 12.25G.

Thank you for your input, Erik.  Previously I would have only been
comfortable with 24G in this system, because I was calculating a need for
significantly higher than 16G.  But now, what we're calling the upper bound
is just *slightly* higher than 16G, while the lower bound and most likely
actual figure is significantly lower than 16G.  So in this system, I would
be comfortable running with 16G.  But I would be even more comfortable
running with 24G.   ;-)

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

Reply via email to