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

时间:2018-10-18 09:21:43

标签: linux mmap procfs sysctl

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

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

  1. 对此有一个限制(vm.max_map_count),因此最好监视当前值。
  2. 数字的增加可能是分配器错误的信号,从而导致不必要的虚拟内存碎片。
  3. 数量不断增加可能表明文件映射泄漏。它们不一定会导致RSS增长,也可能不会触发OOM。但是,它们会污染VMA树,并可能超过max_map_count限制。

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

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

内核中已经有一个计数器(mm_struct-> map_count),因此我希望它存在于/ proc / self / *中的某个位置,但实际上找不到它。有什么想法吗?

0 个答案:

没有答案
相关问题