7
votes

Fichier MMAP partagé via NFS?

Scénario A :

Pour partager un bloc de mémoire de lecture / écriture entre deux processus exécutés sur le même hôte, Joe Madame le même fichier local des deux processus.

scénario B :

Pour partager un bloc de mémoire de lecture / écriture entre deux processus exécutés sur deux hôtes différents, Joe partage un fichier via NFS entre les hôtes, puis multiples le fichier partagé des deux processus.

Quelqu'un a-t-il essayé scénario B? Quels sont les problèmes supplémentaires qui se posent dans le scénario B qui ne s'appliquent pas au scénario A?.


2 commentaires

Vous auriez probablement ENODEV . Mais rédiger un programme qui tente de cartographier un fichier de NFS prend moins de coups de frappe que de rédiger cette question.


@ C2H50H: Pourquoi cela retournerait-ildesv? Je suis sûr que le MMAP Syscall retournera le succès - mais cela ne répond pas à ma question.


3 Réponses :


0
votes

Je dirais que le scénario B a toutes sortes de problèmes (en supposant que cela fonctionne comme suggéré dans les commentaires). Les problèmes les plus évidents sont les problèmes de concurrence de normes - 2 processus partageant 1 ressource sans forme de verrouillage, etc. qui pourrait entraîner des problèmes ... Je ne sais pas si NFS a ses propres bizarreries à cet égard ou non.

En supposant que vous puissiez vous déplacer dans les problèmes de concurrence, vous dépendez maintenant de maintenir une connexion réseau stable (et rapide). Évidemment, si le réseau abandonne, vous risquez de manquer de modifications. Si cette question dépend de votre architecture.

Ma pensée est que cela sonne comme un moyen facile de partager un bloc de mémoire sur différentes machines, mais je ne peux pas dire que j'ai entendu parler de cela qui me fait penser que ce n'est pas si bon. Lorsque je pense que je pense que le partage des données entre Procs, je pense que DBS, messagerie ou serveur dédié. Dans ce cas, si vous avez fabriqué un procédé, le maître (pour gérer la concurrence et posséder le concept -i.e. Quel que soit ce que ce gars dit est la meilleure copie des données) Cela pourrait fonctionner ...


0 commentaires

5
votes

MMAP ne partagera pas de données sans quelques actions supplémentaires.

Si vous modifiez des données dans une partie du fichier MmePed, les modifications ne seront stockées que dans la mémoire. Ils ne seront pas rougrés au système de fichiers (local ou à distance) jusqu'à MSYNC ou munmap ou ferme ou même décision du noyau OS et de son fs.

Lorsque vous utilisez NFS, le verrouillage et l'enregistrement des données seront plus lents que si vous utilisez la FS local. Les délais de rinçage et de temps des opérations de fichier varieront également.

sur Le site sœur dit que NFS peut avoir une politique de mise en cache médiocre, il y aura donc beaucoup plus de demandes d'E / S au serveur NFS comparant les demandes d'E / S d'E / S à la FS locales.


0 commentaires

4
votes

Vous aurez besoin de verrouillage d'octet-gamme pour un comportement correct. Ils sont disponibles dans NFS> = V4.0.


0 commentaires