Sébastien Dinot a écrit : > > L'avantage du tmpfs sur les ramdisks traditionnels est qu'il ne consomme > que la mémoire nécessaire avec un plafond fixé à 50 % de la mémoire vive > disponible.
Bien que ce soit un peu hors sujet dans ce fil, je voudrais nuancer à cette affirmation. D'abord un petit rappel sur la différence fondamentale entre ramdisk et tmpfs : un ramdisk est un périphérique bloc, comme un disque physique, une partition, un ensemble RAID, un volume logique LVM, un volume chiffré... On peut y mettre n'importe quel contenu ; système de fichiers de type quelconque, swap (pas grand intérêt certes), données brutes... Il existe indépendamment de son utilisation. Un tmpfs est uniquement un système de fichiers, sans périphérique sous-jacent, et n'existe que s'il est monté. Un ramdisk traditionnel, comme un tmpfs, ne consomme pas de mémoire tant qu'on n'a pas écrit dedans. Néanmoins une fois qu'un bloc a été écrit, il occupe de la mémoire même s'il n'est plus utilisé par la suite (par exemple s'il contenait un fichier effacé). Au contraire, quand un fichier d'un tmpfs est effacé, la mémoire qu'il occupait est libérée. Autre avantage du tmpfs : en cas de pression sur la mémoire, son contenu peut être swappé. On peut donc définir un tmpfs de grande taille sans craindre l'épuisement de la mémoire tant qu'il y a assez de swap. Lorsqu'on veut utiliser un système de fichiers en mémoire, il semble donc que tmpfs n'ait que des avantages par rapport à un système de fichiers traditionnel dans un ramdisk. Mais une nouvelle variante de ramdisk est disponible à partir noyau 3.14 : zram. Grâce à la compression, l'occupation de la mémoire est réduite en fonction de la nature des données. Autres avantages : un zram peut être réinitialisé ou désactivé, libérant toute la mémoire qu'il occupait, et supporte la notification de libération (en d'autres termes, l'option "discard" ou l'utilisation de "fstrim" pour libérer la mémoire occupée par les fichiers supprimés).