However, unless I'm missing something, all three seem to store a file/block/extent/whatever in cache the first time it is read.
A outra opção seria não armazenar nada em cache na primeira vez que for lida e, em vez disso, manter uma contagem do número de vezes que algo é necessário e, em seguida, usar um número arbitrário para decidir quando algo foi "usado com frequência".
Ninguém jamais implementaria um sistema desse modo, porque significa que se dissermos que o número é 10 ou 20 ou 100 vezes, então, quando o número for atingido, é óbvio que o sistema falhou para armazenar em cache um item acessado com frequência o primeiro número X de vezes. Não é tão útil!
I'd like the cache to cache those reads I use often.
Para reiterar o ponto anterior, o que é "frequentemente"? Realisticamente, não poderia ser um número fixo, já que, se o sistema estiver ligado por tempo suficiente, muitas coisas podem se tornar "frequentemente usadas". Pode ser um número escalado para uma "pontuação alta", mas, nesse caso, a escala pode ficar muito desequilibrada se você tiver alguns itens pequenos acessados por um número desproporcional de vezes.
Resumindo: nenhum mecanismo de cache usará uma contagem mínima . Ele vai armazenar em cache tudo até que o cache esteja cheio, então ele vai começar a despejar coisas com base em algum algoritmo de prioridade.
Como "frequência" é um fator "frequente", faz sentido que toda leitura armazene algo em cache, mesmo que seja a primeira vez e o cache esteja cheio, já que o último arquivo lido será "lido com mais frequência". arquivo "se considerarmos uma frequência de" o número de vezes que este arquivo foi lido no passado X lê ", onde X = 1.
I'm worried that a search over the bodies of all my maildir files or a recursive grep in some large directory might evict large portions of stuff I read far more often.
Provavelmente não, se o cache estava cheio para começar. Cada leitura será armazenada em cache, mas também será despejada mais cedo do que as coisas armazenadas em cache que costumam ser acessadas.
I guess adaptive replacement might be a term describing what I'm after.
Observe no "Resumo" nessa página da Wikipédia que a discussão é sobre diferentes estratégias (vs. LRU) para classificar coisas no cache , não coisas que nunca estiveram no cache . Isso segue a lógica que descrevi acima: tudo entra no cache , e a eficácia do mecanismo de armazenamento em cache é determinada pelo algoritmo para remover as coisas do cache . Não colocá-los em.