如何从elf文件中计算vmrss

时间:2015-12-01 02:03:26

标签: memory elf

我正在研究内存有限的嵌入式系统。我想找到一种方法来计算运行elf文件时将使用多少内存。

我希望结果接近 vmrss ,我可以使用cat /proc/pid/status来获取。内存在运行时每时每刻都在变化。所以更接近的结果或下限也是有用的。

假设没有动态内存(如通过malloc)或映射内存(通过mmap)。

1 个答案:

答案 0 :(得分:0)

简化假设:

  1. 您不使用共享库
  2. 您不会运行ELF二进制文件的多个实例
  3. 您不使用swap
  4. 您的二进制文件访问其所有代码和数据
  5. 没有重要的mallocmmap用法
  6. 通过以上假设,您可以查看readelf -Wl a.out | grep LOAD,并简单地将PT_LOAD段大小加在一起作为RSS的上限。

    如果您使用共享库,则还需要添加其PT_LOAD段。但是如果它们被多个二进制文件使用,那么消耗的总系统内存将小于每个进程的RSS总数。同样违反假设2。

    违反假设3和4将减少观察到的RSS,而违反5会增加它。