¿Qué significa el concepto de caché frío y caché cálido?

10

Leí un artículo y usó los términos "caché en frío" y "caché en caliente". ¿Qué significa el concepto de caché frío y caché cálido? Visito esto pero necesito algo más.

Amir
fuente
1
¿Qué consideras útil? ¿Cómo piensa utilizar la información? Solo pregunto porque, ya sabes: google.com/search?q=wikipedia+cold+cache
mikeserv
Quiero usar este concepto en mi trabajo, así que necesito más detalles sobre ellos.
Amir
Simplemente usa la temperatura como una metáfora para comprender cuán útil es un caché en particular ya que la "utilidad" existe en un continuo. Los cachés más cálidos tienen altas tasas de éxito, mientras que los cachés fríos están llenos de datos que probablemente no va a pedir nuevamente en el corto plazo, por lo que solo están ocupando espacio.
Bratchley 01 de
@JoelDavis: si los cachés no necesitaran manejar errores, entonces lo anterior sería cierto, y el único método para reemplazar los datos almacenados en caché que alguna vez necesitarían ser desarrollados sería LFU, pero debido a que los datos son propensos a errores por una variedad de razones, manejo un caché en frío es un poco más complicado que simplemente reemplazar los datos menos utilizados.
mikeserv 01 de

Respuestas:

13

Bueno, en resumen: un caché cálido es útil mientras que un caché frío no lo es. De hecho, un caché frío puede ser peligroso de usar.

Verá, el objetivo de un caché es mantener accesibles los datos a los que se accede con frecuencia. Por ejemplo, un caché DNS almacenará localmente los resultados de las resoluciones de nombre que solicitó recientemente y, cuando esas mismas resoluciones se soliciten nuevamente, sus resultados ya estarán disponibles y se entregarán de inmediato sin consultar una base de datos de nombres fuera del sitio más grande y probable . En otras palabras, su computadora no tiene que pedirle al servidor de nombres de dominio de su proveedor de servicios de Internet la dirección IP de google.com porque su computadora ya lo sabe: su caché DNS está caliente.

Pero si nunca solicita la IP de Google, entonces no estará en su caché. Un caché en frío es demasiado obsoleto para ser útil, ya que en los datos que contiene es probable que sea demasiado viejo para ser exacto , o está completamente vacío y el vacío está bastante frío.

Pero a menudo vacío es mejor que viejo, aunque esto depende en gran medida, por supuesto, de los datos que se almacenan en caché. Empty es fácil de manejar porque solo necesita relleno, eso es obvio, pero los cachés antiguos requieren corrección de errores. Este es el principal problema logístico de desarrollar y mantener sistemas de caché: ¿cómo puede saber si los datos que ha almacenado en caché están actualizados y qué se hace si no lo está?

No responderé ninguna de esas preguntas, ambas dependen de la implementación y, de todos modos, probablemente estén más allá de mi capacidad, pero debe entenderse que todos los sistemas de almacenamiento en caché conllevan un riesgo inherente de inexactitud. Va con el territorio. El riesgo puede no ser grande: a menudo es solo un riesgo de unos pocos nanosegundos adicionales en el tiempo de procesamiento. El sistema de caché verificará los datos solicitados contra cualquier seguridad que haya sido implementada por el diseñador de caché y, si se determina que es deficiente, entonces el sistema de caché, por ejemplo, consultará el DNS del ISP para la IP de Google y todo está bien.

Sin embargo, cuanto más caliente es el caché, menos se arriesga. Los beneficios de la caché en caliente de mantener los datos estimados cerca superan los riesgos de los inconvenientes de la caché fría o ... probablemente no debería estar almacenando en caché.

mikeserv
fuente
77
Como dice la famosa cita, "Hay dos problemas difíciles en informática: nombrar cosas, invalidación de caché y errores". Saber que sus valores en caché son antiguos es exactamente lo que significa la invalidación de caché :)
Riking
En su comentario sobre la inexactitud de la memoria caché, eso no es necesariamente cierto. Si el sistema / aplicación tiene acceso exclusivo a la fuente de datos, las entradas de caché se pueden actualizar o desalojar según corresponda. Es solo si se trata de fuentes a las que se accede simultáneamente (por ejemplo, DNS, NFS o CIFS) que se encuentra con este problema (incluso si solo uno tiene acceso de escritura, como con DNS).
Bratchley 01 de
"si no, por qué estás almacenando en caché" La misma razón que tendrías para almacenar cualquier otra cosa: protección contra alta latencia. Por ejemplo, el caché del sistema de archivos es solo para que el sistema operativo no tenga que salir al disco para solicitudes comunes. Sin embargo, el caché todavía está en un estado coherente, ya que las modificaciones a los sistemas de archivos locales tendrían que pasar por el núcleo de todos modos. La parte de ECC no es realmente relevante ya que ese tipo de corrupción no se debe al almacenamiento en caché, sino a un error de hardware que afectaría a todos los sistemas por igual, sin importar cómo se diseñaron.
Bratchley 01 de
El disco es un caché de RAM?
Bratchley 01 de
Creo que tienes la relación invertida. El contenido del disco al que se accedió recientemente se almacena en caché en la RAM, por lo que la memoria es un caché para el disco (o al menos se usa como parte del sistema de almacenamiento en caché). El acceso al disco es la operación lenta que almacena cosas en la memoria está diseñada para moverse.
Bratchley 01 de
6

En general, un caché frío es uno que no está bien poblado (todavía). Entonces, si su caché está fría, la información debe recuperarse utilizando el método, presumiblemente, más lento. Este suele ser el caso poco después de que se inicia una aplicación o los tipos de consultas cambian significativamente.

Por el contrario, un caché cálido está bien poblado con información que ha recuperado recientemente o con frecuencia.

Con respecto a los sistemas de archivos ext y las estructuras de directorios, hay información sobre cómo el almacenamiento en caché generalmente funciona en el Sistema de archivos virtuales (VFS) en Linux aquí: http://www.tldp.org/LDP/tlk/fs/filesystem.html

cpugeniusmv
fuente
"recientemente o con frecuencia"? Recientemente sí. pero con frecuencia?
Faheem Mitha
1
@FaheemMitha Es cierto: LFU es definitivamente un acrónimo muy común que encontrarás en este departamento. Si su memoria caché es razonablemente segura de contener solo información reciente y está llena, entonces debe tener algún otro medio para determinar qué información se reemplaza a medida que lee datos nuevos. LFU es probablemente el camino que seguirás.
mikeserv
@cpugeniusmv Gracias por el enlace. Eso podría incluirse razonablemente en su respuesta.
Faheem Mitha