Je travaille actuellement sur un module Apache qui utilise un gros fichier mmap pour partager des données entre les processus. Ceci est créé au démarrage et supprimé lorsque le serveur s'arrête (peut choisir de le conserver à un stade ultérieur). J'ai implémenté ceci en utilisant les bibliothèques Apache APR, et cela fonctionne bien, au moins pour les fichiers plus petits. Lorsque la taille du fichier mappé en mémoire augmente cependant (il reste suffisamment de mémoire vive pour le mettre en cache lorsque le serveur est en cours d'exécution), le système s'arrête parfois car il semble que le système d'exploitation (Linux dans mon cas) consomme beaucoup de ressources en synchronisant le fichier avec le disque. Y at-il un moyen de contrôler/réduire cette synchronisation?Synchronisation excessive du fichier mappé en mémoire dans le module Apache
Puisque je n'ai pas besoin pour le moment du contenu synchronisé sur le disque, j'aurais probablement dû utiliser un segment de mémoire partagée et j'essaierai à la place. Je suis cependant toujours intéressé par les moyens de contrôler la synchronisation des fichiers mappés en mémoire.
La bibliothèque APR gère uniquement la création du fichier mappé en mémoire et ne contient aucun appel msync(). Je n'appelle pas msync() dans mon code non plus. Mon code saute cependant beaucoup dans la mémoire puisque le fichier contient des données en cache. – Chris
Vous devriez lire quelques-unes des notes d'architecture sur le cache web de Varnish. Ces documents montrent comment gérer efficacement la cartographie de la mémoire. – chrisaycock