Qu’est-ce que cela signifie par cache froid et concept de cache chaud?

J’ai lu un journal et utilisé les termes ” cache froid ” et ” cache chaud “. Je cherche mais je n’ai pas trouvé quelque chose d’utile. Que signifie le concept de ” cache froid ” et de ” cache chaud “?

Je visite aussi ce lien Mais j’ai besoin de quelque chose de plus.

TL; DR Il y a une analogie avec le moteur froid et le moteur chaud de la voiture. Cache froid – n’a aucune valeur et ne peut pas vous donner d’accélération car, bien, il est vide. Le cache chaud a certaines valeurs et peut vous donner cette accélération.

Cache est une structure qui contient certaines valeurs (inodes, pages de mémoire, blocs de disque, etc.) pour une recherche plus rapide.

Le cache fonctionne en stockant un certain type de références courtes dans une structure de données de recherche rapide (table de hachage, arbre B +) ou un support d’access plus rapide (mémoire RAM vs disque dur, disque dur SSD vs disque dur).

Pour pouvoir effectuer cette recherche rapide, votre cache doit contenir des valeurs. Regardons l’exemple.

Disons que vous avez un système Linux avec un système de fichiers. Pour accéder aux fichiers du système de fichiers, vous devez savoir où votre fichier démarre sur le disque. Cette information stockée dans inode. Pour simplifier, nous disons que la table d’inodes est stockée quelque part sur le disque (partie dite “superbloc”).

Maintenant, imaginez que vous deviez lire le fichier / etc / fstab. Pour ce faire, vous devez lire la table inode à partir du disque (10 ms), puis l’parsingr et obtenir le bloc de démarrage du fichier, puis lire le fichier lui-même (10 ms). Total ~ 20ms

C’est beaucoup trop d’opérations. Donc, vous ajoutez un cache sous forme de table de hachage dans la RAM. L’access à la mémoire vive est de 10 ns, soit 1 000 fois plus rapide. Chaque ligne de cette table de hachage contient 2 valeurs.

(inode number or filename) : (starting disk block) 

Mais le problème est que, au début, votre cache est vide – ce cache est appelé cache froid . Pour exploiter les avantages de votre cache, vous devez remplir certaines valeurs. Comment ça se passe? Lorsque vous recherchez un fichier, vous regardez dans votre cache d’inode. Si vous ne trouvez pas d’inode dans le cache ( cache manque ), vous dites «Ok» et faites un cycle de lecture complet avec la lecture de la table inode, l’parsing et la lecture du fichier lui-même. Mais après avoir analysé une partie, vous enregistrez le numéro d’inode et le bloc de disque de départ analysé dans votre cache. Et cela continue encore et encore – vous essayez de lire un autre fichier, vous regardez dans le cache, vous obtenez un manque de cache (votre cache est froid), vous lisez à partir du disque, vous ajoutez une ligne dans le cache.

Le cache froid ne vous permet donc pas d’accélérer, car vous lisez toujours à partir du disque. Dans certains cas, le cache froid ralentit votre système car vous faites un travail supplémentaire (étape supplémentaire de recherche dans la table) pour réchauffer votre cache.

Après un certain temps, vous aurez des valeurs dans votre cache et, quelque temps, vous essayez de lire un fichier, vous cherchez dans le cache et dans BAM! vous avez trouvé inode ( succès du cache )! Maintenant, vous avez le bloc de disque de démarrage, donc vous ignorez la lecture du superbloc et commencez à lire le fichier lui-même! Vous venez de sauver 10ms!

Ce cache le cache chaud – cache avec certaines valeurs qui vous donne access au cache.

entrer la description de l'image ici

Contexte:

Cache est une memory petite et plus rapide, qui évite au CPU d’accéder à main memory (plus grande et plus lente) pour gagner du temps ( cache lectures du cache sont ~100 x plus rapides que celles de main memory ). Mais cela ne sert à rien si les données dont votre programme a besoin ont été cached en cached (à partir de main memory dans le cache ) et sont valides. De plus, le cache est rempli avec les données au fil du temps. Donc, le cache peut être:
1. vide, ou
2. peut contenir des données non pertinentes , ou
3. peut contenir des données pertinentes .


Maintenant, à votre question:

Cache froid: lorsque le cache est vide ou contient des données non pertinentes, de sorte que le CPU doit lire plus lentement main memory pour vos besoins en données de programme.

Hot cache: lorsque le cache contient des données pertinentes et que toutes les lectures de votre programme sont satisfaites à partir du cache lui-même.

Ainsi, les caches chaudes sont souhaitables, les caches froides ne le sont pas.

Très belle réponse @avd.

Cold Cache n’est qu’un cache vide ou contenant des données obsolètes.

Hot Cache d’autre part, conserve les données utiles dont votre système a besoin. Cela vous aide à accélérer le traitement; il est surtout utilisé pour le traitement en temps quasi réel des requêtes. Certains systèmes / processus nécessitent certaines informations avant de commencer à répondre aux demandes des utilisateurs. comme une plate-forme de négociation qui nécessiterait market-data / risk-info / security-info, etc. avant de pouvoir traiter une demande d’utilisateur. Cela prendra du temps si, pour chaque requête, le processus doit interroger un DB / service pour obtenir ces informations critiques. Donc, ce serait une bonne idée de le mettre en cache; et ce serait faisable grâce à Hot Cache. Ce cache doit être entretenu régulièrement (mises à jour / suppressions, etc.); Dans le cas contraire, la taille de votre cache peut augmenter avec les données inutiles et vous risquez de constater une dégradation des performances.

Pour créer Hot Cache, une méthode serait une population de cache paresseuse, ce que je veux dire par là, c’est que lorsque vous recevez des requêtes, vous remplissez le cahce; dans ce cas, les demandes initiales seraient lentes mais les suivantes seraient plus rapides. Une autre approche consisterait à charger les données au démarrage du processus (ou avant que les demandes des utilisateurs ne commencent à arriver) et à maintenir le cache jusqu’à ce que le processus fonctionne.