Как найти общие / скопированные страницы памяти в разветвленных процессах в C - PullRequest
5 голосов
/ 28 июля 2011

У меня есть процесс на сервере Linux, который загружает большие ресурсы при запуске.Эти процессы будут развёрнуты по запросу.Ресурсы, которые загружаются при запуске, являются самыми большими вещами и не изменятся во время выполнения.Дочерние дочерние процессы используют структуры управления чтением / записью для обработки запросов к постоянным ресурсам.

Как узнать, сколько памяти распределяется между процессами и сколько является уникальным для каждого процесса?Или какие страницы дублируются из-за доступа к записи любого из процессов?

1 Ответ

5 голосов
/ 28 июля 2011

Вы можете получить эту информацию из виртуальных файлов /proc/$pid/pagemap и /proc/kpagecount и /proc/kpageflags в файловой системе proc. Для доступа к последнему требуется root, поскольку он может утечь привилегированную информацию о отображениях памяти процесса, которыми вы не владеете. Прочитайте Documentation/vm/pagemap.txt из документации ядра для подробностей о формате данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...