У ARC нет постоянных счетчиков, поэтому ему придется снова увидеть ваш шаблон доступа, чтобы определить, что что-то часто используется. Тем не менее, он ничего не изгонит, пока не заполнится / не возникнет давление памяти из-за чего-то еще в системе, поэтому при первой загрузке все прочитанное или записанное попадет в кэш. Если ваши часто используемые данные читаются дважды, то они должны попасть в список «MFU».
Вы можете прочитать больше об алгоритме ARC здесь . Короче говоря, он фактически состоит из двух списков LRU, один для материала, к которому был получен доступ один раз («список MRU»), и один для материала, к которому обращались дважды или более («список MFU» - да, имя неверное, оно действительно использует LRU для выселения, потому что LRU быстрее и проще в реализации, чем MFU). Существуют также «списки призраков», которые отслеживают недавно извлеченные ключи (но не данные) из каждого списка, которые помогают определить, насколько большими должны быть два кэша относительно друг друга.
L2ARC является постоянным (обычно хранится на SSD), но не использует алгоритм ARC (еще одно неоптимальное имя). Я считаю, что это просто циклически перебирает данные в кеше. Кроме того, я полагаю, что вы не сможете повторно использовать его после перезагрузки, если не используете форк OpenZFS от Nexenta (я не думаю, что они загрузили его до разработки).
За исключением функции Nexenta «Persistent L2ARC», ничего в этом ответе не зависит от платформы.