La mise en cache et l’utilisation de cache par les systèmes est très courant.
Il est donc important de connaître le principe de cache, son utilisé et son fonctionnement global.
Dans ce tutoriel, nous allons apprendre ce qu’est la mémoire cache avec quelques exemples d’utilisations.
Enfin d’article, vous trouverez les différences avec un tampon mémoire (buffer en anglais).
Table des matières
Qu’est-ce qu’un cache en informatique
La mise en cache est le processus consistant à stocker temporairement une copie d’une ressource donnée afin que les demandes ultérieures de cette même ressource soient traitées plus rapidement.
La mise en cache sur disque est avantageuse car les données mises en cache sur le disque dur ne sont pas perdues en cas de panne du système. Cependant, l’accès aux données dans la mise en cache sur disque est plus lent que dans la mise en cache en mémoire.
Un cache a essentiellement deux buts :
- Gagner en performances. Au lieu de regénérer les données, les données sont déjà disponibles dans le cache. Il suffit de les demander au cache pour les délivrer
- Soulager la base de données, l’utilisation réseau ou CPU. Le fait que les données soient déjà disponibles évite de devoir les redemander. Au final, le cache permet d’économiser des ressources systèmes et matériel
Il existe différents type de cache.
Par exemple le cache matériel, que l’on peut trouver sous forme de mémoire vive dynamique (DRAM) dans le processeur d’un ordinateur.
On peut aussi en trouver dans les disques dur HDD, sous la forme de cache disque, qui sert plutôt de mémoire tampon (Buffer memory).
Le système d’exploitation ou un programme peut créer une mémoire cache en utilisant la mémoire RAM (mémoire vive statique (SRAM)).
Quelques exemples de cache
Le cache des navigateurs internet est certainement celui le plus connu.
Le principe est simple, il s’agit de stocker sur l’appareil les morceaux des sites internet visités (images, CSS, HTML, etc).
Lorsque l’utilisateur recharge la page internet, une partie est prise, cela évite de redemander au serveur ces portions.
Cela évite de consommer le réseau et sur les connexions lentes aident à accélérer le chargement des pages internet.
Les proxy ont aussi un cache pour un principe totalement identique.
Dans une entreprise avec des centaines/milliers d’appareils, recharge une page internet depuis le cache du proxy permet d’économiser la bande passante de la connexion internet.
Serveurs WEB ou PHP
Les serveurs WEB utilisent aussi un cache qui évite de “reconstruire” la page internet et interroger le serveur PHP ou la base de données.
Lorsqu’un appareil demande à consulter la ressources, le serveur WEB ou le serveur PHP fournit le cache.
Cela permet d’économiser énormément les ressources de calcul (CPU, etc) et permet aux serveurs WEB de répondre à des millions de requêtes en quelques secondes.
On peut aussi configurer NGINX, Varnish comme serveur de cache que l’on place entre le client et le serveur final (backend) en tant que proxy inversé.
Enfin les solutions delivery networks (CDNs) peuvent aussi servir de fournisseur de cache.
Cela a aussi effet d’alléger la base de données en réduisant le nombre de requêtes SQL.
Dans Windows
Le système d’exploitation de Microsoft possède de nombreux cache.
- Cache mémoire (SysMain) : Stocke en mémoire les données utilisées par les applications même après la fermeture. Si l’utilisateur réouvre l’application, elle se chargera plus vite car les données y sont déjà présentes. Lien connexe lire : Mesurer l’utilisation mémoire sur Windows
- Cache DNS : Cache qui stocke les correspondances adresse IP et nom d’hôte pour éviter de réinterroger le serveur DNS
- Le cache Windows Store
- Cache APR : Cache et table de correspondance du protocole ARP (Address Resolution Protocol)
- Cache Windows Update
Dans Linux
Comme nous le savons, l’utilisation de la mémoire tampon et de la mémoire cache du système de fichiers Linux permet d’accélérer les opérations d’entrée et de sortie (E/S).
Le noyau met en cache mémoire, les fichiers sont souvent lus par le système pour un accès plus rapide.
Dans les CPU, disques/SSD, etc
Beaucoup de périphériques ont un cache matériel ou que l’on peut configurer dans l’OS.
Par exemple le CPU possède plusieurs niveaux de cache (L1, L2, L3).
Le but est d’éviter de stocker et consulter les données en RAM, ce qui permet d’avoir des données au plus proche du processeur afin de gagner en performances.
Plus de détails : Processeur CPU et coeurs : Caractéristiques et fonctionnement
Les disques dur (HDD) et SSD ont aussi un cache.
Par exemple, Crucial propose un système Momentum Cache qui utilise une partie de la mémoire pour stocker des données.
Quelle est la différence entre un cache mémoire et la mémoire tampon (buffer)
Dans un article précédent, j’expliquais ce qu’était à quoi servait la mémoire tampon : Qu’est-ce que la mémoire tampon (Buffer memory).
Essentiellement la principale différence est :
- Le cache vise à accélérer l’accès aux données et soulager les ressources systèmes
- Le buffer cherche à compenser la différence de vitesse entre deux systèmes ou matériels
Consultez ce tableau pour comprendre les différences.
Buffer | Cache |
---|---|
Existe uniquement dans la RAM | Existe en RAM ou sur le disque dur |
Compense la différence de vitesse entre deux programmes qui échangent des données | Accélère l’accès aux données qui sont fréquemment demandées |
Stocke les données originales | Stocke une copie des données originales |
Un emplacement de stockage temporaire normal dans la la RAM | Un emplacement de stockage rapide dans la mémoire vive ou sur le disque dur. |
Composé de RAM dynamique | Composé de RAM statique |
Comment vider le cache
Voici les tutoriels du site pour vous aider à vider les cache.