For simplicity, consider a single-path hierarchy of ARC caches (Figure 6).
Theoretically, the caches could pass the marginal utility of the and
lists to lower caches
which could dynamically adapt
at each cache level to equalize the utility across the hierarchy.
However, it can be challenging to adapt
in a stable way for both
and
lists at each level.
We found a simple policy that works very well for ARC. For traffic destined for
lists,
at each cache
is set to a fixed value
.
Instead of the cache life, the
of the
list is passed to lower caches,
where
is the fraction of the cache occupied by
.
Merely using the cache life for
list did not fare well, compared to DEMOTE-ARC, in unlimited bandwidth cases.
The
for the
lists is dynamically adapted at each level so as to equalize
across the hierarchy (Lines 41-43).
Another hint called the is used along with read requests and replies
to indicate that the page should be stored in a
list as it has been seen earlier (Line 46).
If any cache decides to keep the page (Line 59),
it creates the page in
if
is true; else it creates it in
.