The Care and Feeding of SSDs - TRIM and Charge Refresh | TrueNAS Tech Talk (T3) E049

It is not quite that simple. L2ARC only populates on eviction from ARC, (aka L1ARC / RAM). And only if it seems useful to keep around. Their are some tunables related to this, including ones that improves L2ARC functionality.

Next, L2ARC requires entries in RAM for pointers. So an 8TB L2ARC SSD might not be good if you have more limited memory, like 16GBs. Having too many L2ARC data or metadata entries, simply eats up RAM. (One RAM pointer to each ZFS block stored in L2ARC…)

A newish feature of L2ARC does allow ZFS block entries to be left in their compressed state. That saves space on the L2ARC, when the data is compressible.

Another newer feature, (several years old by now), is for L2ARC to persist across boots / pool exports. That helps, yet creates a pool import delay because the RAM pointers need to be re-created from the persistent L2ARC entries.

I’ve written something up about L2ARC. It’s not perfect, but if anyone finds something useful to add, or mistake to correct, I will certainly update the Resource.

2 Likes