Как получить количество отображенных областей памяти (mm_struct-> map_count) из пространства пользователя - PullRequest
0 голосов
/ 18 октября 2018

Я хотел бы добавить количество отображенных областей памяти в отчет о состоянии моего демона.

Существует ряд причин, по которым вам может потребоваться это:

  1. Для этого есть ограничение (vm.max_map_count), поэтому рекомендуется отслеживать текущее значение.
  2. Растущее число может быть признаком ошибки распределителя, приводящей к ненужной фрагментации виртуальной памяти.
  3. Растущее число может быть признаком утечки отображений файлов.Они не обязательно приводят к росту RSS и могут не вызывать OOM.Однако они загрязняют дерево VMA и могут превышать предел max_map_count.

Вопрос в следующем: каков наилучший способ получить это число изнутри вашего процесса?

Один из способов - считать строки в / prof / self / map, но это выглядит неоптимально.Ни я не хочу анализировать текстовый файл 10K строк, чтобы получить одно целое число, ни ядру не нужно каждый раз материализовать весь буфер.

В ядре уже есть счетчик (mm_struct-> map_count), поэтому я бы хотеложидать, что он будет присутствовать где-то в / proc / self / *, но не может его найти.Есть идеи?

...