Der ARC hat keine permanenten Leistungsindikatoren, so dass er Ihr Zugriffsmuster erneut sehen muss, um festzustellen, dass etwas häufig verwendet wird. Es wird jedoch nichts aufheben, bis es voll ist / es gibt Speicherdruck von etwas anderem im System, so dass beim ersten Start alles, was gelesen oder geschrieben wird, im Cache landet. Solange Ihre Daten, auf die Sie häufig zugreifen, zuvor zweimal gelesen werden, sollten sie in die Liste „MFU“ aufgenommen werden.
Weitere Informationen zum ARC-Algorithmus finden Sie hier . Kurz gesagt, es besteht eigentlich aus zwei LRU-Listen, eine für Sachen, die einmalig erworben wurden (die "MRU-Liste"), und eine für Sachen, auf die zweimal oder mehr zugegriffen wurde (die "MFU-Liste" - ja, die Der Name ist falsch, er verwendet LRU wirklich zum Entfernen, da LRU schneller und einfacher zu implementieren ist als MFU. Es gibt auch "Geisterlisten", die die zuletzt geräumten Schlüssel (aber keine Daten) aus jeder Liste nachverfolgen, sodass sie feststellen kann, wie groß die beiden Caches relativ zueinander sein sollten.
Der L2ARC ist dauerhaft (wird normalerweise auf SSDs gespeichert), verwendet jedoch nicht den ARC-Algorithmus (noch einen anderen suboptimalen Namen). Ich glaube, es werden einfach die Daten im Cache abgerundet. Ich glaube auch, dass Sie es nach einem Neustart nicht wiederverwenden können, es sei denn, Sie verwenden Nexentas Gabel von OpenZFS (ich glaube nicht, dass sie bisher im Upstream gelandet sind).
Abgesehen von Nexentas „Persistent L2ARC“ -Funktion ist nichts in dieser Antwort plattformspezifisch.