Shmem vs tmpfs contre mmap
Ce que quelqu'un sait comment bien les 3 suivants comparer en termes de vitesse:
- mémoire partagée
- tmpfs (/dev/shm)
- mmap (/dev/shm)
Merci!
source d'informationauteur SyRenity
Vous devez vous connecter pour publier un commentaire.
Lire sur
tmpfs
ici. Ce qui suit est copié à partir de cet article, en expliquant la relation entre la mémoire partagée et lestmpfs
en particulier.Donc, lorsque vous utilisez la mémoire partagée POSIX (que j'ai utilisé avant, trop), puis
glibc
va créer un fichier à/dev/shm
qui est utilisé pour partager des données entre les applications. Le fichier de descripteur de il retourne fera référence à ce fichier, que vous pouvez transmettre àmmap
dire à la carte que fichier dans la mémoire, comme on peut le faire avec n'importe quel "vrai" fichier soit. Les techniques que vous avez énumérés sont donc complémentaires. Ils ne sont pas en concurrence.Tmpfs
est juste le système de fichier qui fournit des fichiers de la mémoire comme une mise en œuvre technique pourglibc
.Comme un exemple, il y a un processus en cours d'exécution sur ma boîte a actuellement enregistré une mémoire partagée de l'objet:
"Ça dépend". En général, ils sont tous en mémoire et dépendantes de la mise en œuvre du système de sorte que la performance sera négligeable et une plate-forme spécifique pour la plupart des utilisations. Si vous vous souciez vraiment de la performance, vous devriez profil et déterminer vos besoins. C'est assez trivial pour remplacer l'une de ces méthodes avec l'autre.
Cela dit, de mémoire partagée est la moins intensive qu'il n'existe pas de fichier opérations (mais encore une fois, très dépendant de l'implémentation). Si vous avez besoin d'ouvrir et de fermer (carte/unmap) à plusieurs reprises, beaucoup de fois, alors il pourrait être une surcharge importante.
Cheers!
Sean
Par la "mémoire Partagée" tu veux dire que la mémoire partagée System V, à droite?
Je pense que Linux mmap est caché tmpfs lorsque vous utilisez le présent, donc c'est effectivement la même que mmaping un tmpfs.
Faire des e/S de fichier sur tmpfs va avoir une pénalité... la plupart du temps (il y a des cas où il pourrait faire sens, comme >4G dans un processus 32 bits)
tmpfs est le plus lent. De mémoire partagée et mmap sont la même vitesse.