Linux上的RAM分析

问题描述

| 我想获取在Linux上运行的RAM中分配的内存的映射。 我正在寻找给定时间的内存利用率,以及在用户进程,内核模块和内核本身方面的分配细节。     

解决方法

由于共享内存,缓存和按需分页,很难做到这一点。 实际上,您可以使用/ proc / PID / maps作为前面的答案,以学习glibc为例,它在某个进程中占用了一定范围的虚拟内存,但是其中一部分在映射该库的所有进程之间共享(代码部分),部分则不是(例如,动态链接器表)。此存储空间的一部分可能根本不在RAM(分页到磁盘)中,并且对写语义的怀疑可能意味着下一刻的存储画面可能会非常不同。 补充说,Linux在缓存(页面和缓冲区高速缓存是主要的)中使用了复杂的功能,其中的一部分可以随心所欲地撤出(缓存IO缓冲区不脏),而有些不能(例如tmpfs页面)它真的很快就变得多毛了。 简而言之,没有人能很好地了解RAM的使用情况以及Linux系统中的用途。我知道最好的答案是页面地图和相关工具。在这里阅读有关它的所有信息:http://lwn.net/Articles/230975/     ,您可以通过检查曾经的进程内存映射来找到它
cat /proc/<PID>/maps
以及整体记忆状态
cat /proc/meminfo