Я хотел бы добавить количество отображенных областей памяти в отчет о состоянии моего демона.
Существует ряд причин, по которым вам может потребоваться это:
- Для этого есть ограничение (vm.max_map_count), поэтому рекомендуется отслеживать текущее значение.
- Растущее число может быть признаком ошибки распределителя, приводящей к ненужной фрагментации виртуальной памяти.
- Растущее число может быть признаком утечки отображений файлов.Они не обязательно приводят к росту RSS и могут не вызывать OOM.Однако они загрязняют дерево VMA и могут превышать предел max_map_count.
Вопрос в следующем: каков наилучший способ получить это число изнутри вашего процесса?
Один из способов - считать строки в / prof / self / map, но это выглядит неоптимально.Ни я не хочу анализировать текстовый файл 10K строк, чтобы получить одно целое число, ни ядру не нужно каждый раз материализовать весь буфер.
В ядре уже есть счетчик (mm_struct-> map_count), поэтому я бы хотеложидать, что он будет присутствовать где-то в / proc / self / *, но не может его найти.Есть идеи?