J'ai besoin de configurer un système de stockage en mémoire pour environ 10 Go de données, composé de nombreux fichiers uniques de 100 ko (images). Il y aura beaucoup de lectures et d'écritures assez périodiques (ajout de nouveaux fichiers, suppression d'anciens).
Maintenant, je sais que tmpfs se comporte comme un système de fichiers normal pour lequel vous pouvez, par exemple, vérifier l'espace libre / utilisé avec df , ce qui est une fonctionnalité intéressante. Cependant, je suis intéressé si Ramfs offrirait certains avantages en ce qui concerne la vitesse des opérations d'E / S. Je sais que je ne peux pas contrôler la taille de la mémoire consommée lors de l'utilisation de ramfs et que mon système peut se bloquer s'il consomme complètement la RAM libre, mais ce ne sera pas un problème dans ce scénario.
Pour résumer, je suis intéressé:
- Côté performances, qui est plus rapide: ramfs ou tmpfs (et peut-être pourquoi)?
- Quand tmpfs utilise-t-il l'espace d'échange? Déplace-t-il des données déjà enregistrées pour les échanger (pour libérer de la RAM pour d'autres programmes en cours d'exécution) ou uniquement de nouvelles données si à ce moment il n'y a plus de RAM disponible?
la source
Réponses:
Ma recommandation:
Mesurez et observez l'activité réelle dans des conditions normales.
Il est peu probable que ces fichiers soient TOUS nécessaires et servis à partir du cache à tout moment. Mais il existe un bel outil appelé vmtouch qui peut vous dire ce qui est dans le cache à un moment donné. Vous pouvez également l'utiliser pour verrouiller certains répertoires ou fichiers dans le cache. Alors voyez à quoi ressemblent les choses après une utilisation régulière. L'utilisation de tmpfs et ramfs n'est pas nécessaire dans cette situation.
Voir: http://hoytech.com/vmtouch/
Je pense que vous serez surpris de voir que les fichiers les plus actifs résideront probablement déjà dans le cache.
En ce qui concerne tmpfs et ramfs, il n'y a pas de différence de performance appréciable. Il existe des différences opérationnelles. Un cas d'utilisation réel est Oracle, où ramfs a été utilisé pour permettre à Oracle de gérer les données en RAM sans risque de les échanger. les données tmpfs peuvent être échangées sous la pression de la mémoire. Il existe également des différences de redimensionnement et de modification des paramètres à la volée.
la source
Ne pensez pas trop à cela. Mettez suffisamment de RAM dans votre système et laissez le cache disque du noyau s'occuper de vous. De cette façon, vous bénéficiez de lectures provenant directement de la mémoire, tout en conservant les données sur le disque.
la source
1) Référence de performance.
En utilisant cette page comme référence, j'ai fait une comparaison d'E / S entre tmpfs et ramfs, et les résultats sont qu'elle est à peu près identique en termes de performances:
2) Selon cette page , tmpfs utilise swap et ramfs n'utilise pas swap.
la source
Si vous avez une quantité suffisante de RAM installée pour héberger les différents tampons du noyau, la pile et les tas d'applications, le cache du système de fichiers normal et tous les fichiers que vous avez l'intention d'y mettre,
ramfs
ne devraient jamais être plus lents quetmpfs
car il n'y aura aucun risque de E / S physiques par conception. Les E / S physiques sont sans aucun doute la principale cause de dégradation des performances dans ce domaine.Cependant, si vous n'avez pas cette quantité de RAM installée, l'utilisation
ramfs
pourrait et sera probablement plus lente quetmpfs
celle-ci utilisant l'heuristique de mémoire virtuelle pour décider ce qui devrait mieux être sur le disque (c'est-à-dire dans la zone de swap) par rapport à ce qui devrait être sur la RAM tandis qu'avectmpfs
, les données de votre système de fichiers sont bloquées sur la RAM, ce qui pourrait être un gaspillage de ressources.Pour répondre à votre deuxième question, oui,
tmpfs
les premières données seront d'abord déplacées vers la zone de swap, pas la dernière "chaude".la source