小编sal*_*min的帖子

如何从用户空间获取映射内存区域的数量(mm_struct->map_count)

我想将映射内存区域的数量添加到我的守护进程的状态报告中。

您可能想要这样的原因有很多:

  1. 有一个限制(vm.max_map_count),所以最好监控当前值。
  2. 不断增长的数字可能是导致不必要的虚拟内存碎片的分配器错误的迹象。
  3. 越来越多的数字可能是泄漏文件映射的迹象。它们不一定会导致 RSS 增长,也可能不会触发 OOM。但是,它们会污染 VMA 树并可能超过 max_map_count 限制。

问题是:从流程内部获取此数字的最佳方法什么?

一种方法是计算 /prof/self/map 中的行数,但它看起来并不理想。我既不想解析一个 10K 行的文本文件来获取单个整数,也不想每次都实现整个缓冲区。

内核中已经有一个计数器(mm_struct->map_count),所以我希望它出现在 /proc/self/* 的某个地方,但实际上找不到它。有任何想法吗?

linux mmap procfs sysctl

5
推荐指数
0
解决办法
257
查看次数

标签 统计

linux ×1

mmap ×1

procfs ×1

sysctl ×1