o que significa cache frio e conceito de cache quente?

10

Eu li um artigo e ele usava os termos "cache frio" e "cache quente". O que significa conceito de cache frio e cache quente? Eu visito isso, mas preciso de algo mais.

Amir
fonte
1
O que você consideraria útil? Como você pretende usar as informações? Só pergunto porque, você sabe: google.com/search?q=wikipedia+cold+cache
mikeserv
Quero usar esse conceito no meu trabalho, por isso preciso de mais detalhes sobre eles.
Amir
É apenas usar a temperatura como uma metáfora para entender o quão útil é um cache específico, uma vez que a "utilidade" existe em um continuum. Caches mais quentes têm altas taxas de acerto, enquanto os caches frios são preenchidos com dados que você provavelmente não solicitará novamente em breve e, portanto, eles estão ocupando espaço.
Bratchley 01/04
@JoelDavis - Se os caches não precisassem lidar com erros, o acima seria verdadeiro, e o único método de substituir dados em cache que já precisaria ser desenvolvido seria LFU, mas como os dados são propensos a erros por várias razões, o tratamento um cache frio é um pouco mais complicado do que apenas substituir os dados menos utilizados.
precisa saber é o seguinte

Respostas:

13

Bem, resumindo: um cache quente é útil, enquanto um cache frio não é. De fato, um cache frio pode ser perigoso de usar.

Veja bem, o objetivo principal de um cache é manter os dados frequentemente acessados ​​acessíveis. Por exemplo, um cache DNS armazenará localmente os resultados das resoluções de nome que você solicitou recentemente e, quando essas mesmas resoluções forem solicitadas novamente, seus resultados já estarão disponíveis e serão veiculados imediatamente sem consultar um banco de dados de nomes externo provavelmente maior . Em outras palavras, seu computador não precisa solicitar ao servidor de nome de domínio do provedor de serviços de Internet o endereço IP para google.com, porque ele já o conhece - seu cache DNS está quente.

Mas se você nunca solicitar o IP do Google, ele não estará no seu cache. Um cache frio é velho demais para ser útil - como nos dados que ele contém é provavelmente velho demais para ser preciso - ou está totalmente vazio e o vazio está muito frio.

Porém, muitas vezes vazio é melhor do que antigo - embora isso seja altamente dependente, é claro, dos dados que estão sendo armazenados em cache. Vazio é fácil de manusear, porque só precisa ser preenchido - isso é óbvio - mas caches antigos exigem correção de erros. Esse é o principal problema logístico do desenvolvimento e manutenção de sistemas de cache - como você pode saber se os dados armazenados em cache estão atualizados e o que é feito se não estiver?

Não responderei a nenhuma dessas perguntas - elas são dependentes da implementação e provavelmente estão muito além da minha capacidade - mas deve-se entender que todos os sistemas de cache vêm com algum risco inerente de imprecisão. Vai com o território. O risco pode não ser grande - geralmente é apenas um risco de alguns nanossegundos extras no tempo de processamento. O sistema de cache verificará os dados solicitados em relação a qualquer segurança à prova de falhas implementada pelo criador do cache e, se for considerado necessário, o sistema de cache, por exemplo, consultará o DNS do ISP quanto ao IP do Google e está tudo bem.

O mais quente do cache, porém, a menos não é arriscado. Os benefícios do cache morno de manter os dados caros próximos superam os riscos das desvantagens do cache frio ou ... provavelmente você não deve fazer o cache.

mikeserv
fonte
7
Como diz a famosa citação, "Existem dois problemas difíceis na ciência da computação: nomear coisas, invalidação de cache e erros pontuais". Sabendo que seus valores armazenados em cache são velhos é exatamente o que os meios de cache invalidação :)
Riking
No seu comentário sobre imprecisão do cache, isso não é necessariamente verdade. Se o sistema / aplicativo tiver acesso exclusivo à fonte de dados, as entradas de cache poderão ser atualizadas ou removidas conforme apropriado. Somente se você estiver lidando com fontes acessadas simultaneamente (por exemplo, DNS, NFS ou CIFS), você terá esse problema (mesmo que apenas um tenha acesso de gravação, como o DNS).
Bratchley
msgstr "mesmo porque você está armazenando em cache" O mesmo motivo que você teria para armazenar em cache qualquer outra coisa: proteção contra alta latência. Por exemplo, o cache do sistema de arquivos é apenas para que o sistema operacional não precise sair para o disco para solicitações comuns. O cache ainda está em um estado coerente, no entanto, uma vez que as modificações nos sistemas de arquivos locais teriam que passar pelo kernel de qualquer maneira. A parte do ECC não é realmente relevante, pois esse tipo de corrupção não se deve ao cache, mas a um erro de hardware que atingiria todos os sistemas igualmente, independentemente de como eles foram projetados.
Bratchley
O disco é um cache de RAM?
Bratchley 01/04
Eu acho que você tem o relacionamento invertido. O conteúdo do disco acessado recentemente é armazenado em cache na RAM, portanto, a memória é um cache para o disco (ou é pelo menos usado como parte do sistema de armazenamento em cache). O acesso ao disco é a operação lenta em que o armazenamento de coisas na memória é projetado para se locomover.
Bratchley
6

Em geral, um cache frio é aquele que ainda não está bem preenchido. Portanto, se seu cache estiver frio, as informações deverão ser recuperadas usando o método, presumivelmente, mais lento. Normalmente, esse é o caso logo após o início de um aplicativo ou os tipos de consultas mudam significativamente.

Por outro lado, um cache quente é bem preenchido com informações que você recuperou recentemente ou frequentemente.

Com relação aos sistemas de arquivos ext e estruturas de diretório, há algumas informações sobre como o cache geralmente funciona no Sistema de Arquivos Virtual (VFS) no Linux aqui: http://www.tldp.org/LDP/tlk/fs/filesystem.html

cpugeniusmv
fonte
"recentemente ou frequentemente"? Recentemente, sim. mas frequentemente?
Faheem Mitha 31/03
1
@FaheemMitha É verdade - LFU é definitivamente um acrônimo muito comum que você encontrará neste departamento. Se é razoavelmente certo que seu cache contém apenas informações recentes e está cheio, você deve ter outros meios para determinar quais informações serão substituídas ao ler novos dados. LFU é provavelmente o caminho a seguir.
mikeserv
@cpugeniusmv Obrigado pelo link. Isso poderia ser razoavelmente incluído na sua resposta.
Faheem Mitha 31/03