vmtouch est un outil de manipulation de cache disque pour divers systèmes d'exploitation unix.

Introduction

L'idée derrière le petit logiciel est d'augmenter la rapidité d'accès au fichier sur le disque en utilisant le page cache.

Le page cache, ou disk cache, est un espace dans la mémoire vive (RAM) qui sert de tampon (buffer) pour toute demande de fichier sur le disque dur. C'est une technique commune à plusieurs systèmes d'exploitation Unix.

Le cas d'utilisation typique est le suivant:

  1. L'utilisateur demande un fichier X. Le noyau Linux regarde dans son espace tampon (le page cache) et ne trouve pas le fichier. Il va donc aller le chercher sur le disque (opération très longue) mais va en placer une copie dans le page cache.

  2. L'utilisateur redemande le fichier X. Le noyau le récupère directement du page cache (opération très rapide).

vmtouch intervient en donnant la possibilité à l'adminisateur d'ajouter ou d'enlever des fichiers dans le page cache. Un mode "daemon" permet de faire cette tâche quotidiennement.

Code source

https://github.com/hoytech/vmtouch

Installation

Pour l'instant, il n'y a pas de paquetage Debian (un Intend to package (ITP) a été rempli).

Autrement dit, pour installer vmtouch il faut le télécharger et le compiler soi-même. Voici comment:

Téléchargement à partir de Git

Premièrement, vous devez le télécharger avec la commande git:

git clone https://github.com/hoytech/vmtouch.git

Installation de ''build-essential''

Pour l'installation, vous allez avoir besoin du paquetage build-essential que vous devez installer de la façon suivante:

sudo apt-get install build-essential

Compilation et installation

Pour finalement passer à l'étape de la compilation puis l'installation:

cd vmtouch
make
sudo make install

Utilisation

On peut utiliser vmtouch de plusieurs manières. Voici quelques exemples:


Introspection du cache d'un système linux

Pour le fichier /etc/passwd qui est fort probablement en cache voici le résultat:

vmtouch -v /etc/passwd
/etc/passwd
[O] 1/1

           Files: 1
     Directories: 0
  Resident Pages: 1/1  4K/4K  100%
         Elapsed: 0.000152 seconds

Contrairement à celui d'une licence:

vmtouch -v  /usr/share/common-licenses/Artistic 
/usr/share/common-licenses/Artistic
[  ] 0/2

           Files: 1
     Directories: 0
  Resident Pages: 0/2  0/8K  0%
         Elapsed: 0.000184 seconds


Mise en page cache d'une grosse base de données après l'initialisation ou le redémarrage d'un nouveau service

Quand par exemple on redémarre le serveur de base de données PostgreSQL, il est fréquent de devoir mettre l'ensemble des bases de données en cache pour accroître la performance dès la première utilisation:

vmtouch -m 1.5G  /var/lib/postgresql/

Vous devez toutefois vous assurer d'avoir suffisamment de mémoire vive pour contenir l'ensemble des bases de données.

Autres infos

vmtouch a été rendu populaire suite à ce billet de blogue du groupe d'ingénieur d'Instagram:


VmTouch (last edited 2012-07-05 16:02:51 by ChristianMaltais)