Comment trouver des pages de mémoire partagées / copiées dans des processus fourchus en C

J’ai un processus serveur Linux qui charge des ressources importantes au démarrage. Ce processus se déroulera sur demande. Les ressources chargées au démarrage sont les plus importantes et ne changeront pas pendant l’exécution. Les processus enfants traditionnels utilisent des structures de contrôle en lecture / écriture pour gérer les demandes aux ressources constantes.

Comment puis-je savoir quelle quantité de mémoire est partagée entre les processus et combien sont utilisables pour chaque processus? Ou quelles pages sont dupliquées en raison de l’access en écriture de l’un des processus?

Vous pouvez obtenir ces informations à partir des fichiers virtuels /proc/$pid/pagemap et /proc/kpagecount et /proc/kpageflags système de fichiers proc. L’access à ce dernier nécessite root car il pourrait provoquer une fuite d’informations privilégiées sur les mappages de mémoire de processus que vous ne possédez pas. Lisez la Documentation/vm/pagemap.txt partir des documents du kernel pour plus de détails sur le format des données.