Linux如何计算MemFree

时间:2009-09-10 20:48:59

标签: linux memory-management

我正在尝试了解我的嵌入式Linux内存使用情况。

通过使用top实用程序和进程文件/ proc / meminfo,我可以看到进程正在使用多少虚拟内存,以及系统可用的物理内存量。但是对于任何给定的进程来说,虚拟内存似乎都比使用的物理内存高得多。由于这是嵌入式系统,因此内存交换被禁用。(SwapTotal = 0)

linux如何计算免费物理内存?因为它似乎没有考虑虚拟内存空间中分配的所有内容。

2 个答案:

答案 0 :(得分:12)

MemFree中的

/proc/meminfo是伙伴分配器中有多少页面可用的计数。这个伙伴分配器是内核中物理内存分配的基本单元;但是,有很多方法可以在需要时将页面返回给伙伴分配器 - 例如,释放空SLAB,丢弃缓存/缓冲区RAM(即使这意味着在正在运行的进程中使PTE无效),或作为最后的手段交换东西。

实际上,MemFree通常被控制为总物理RAM的5-10%,随着时间的推移,任何额外的空闲RAM都被添加到缓存中。因此,单独MemFree是对整体记忆情况的非常不完整的看法。

对于给定进程的虚拟内存(VSIZE),这是指进程地址空间中所有映射内存段的大小总和。但是,并非所有这些都是实际存在的 - 有些可能是paged in upon first access,因此在实际使用之前不会注册为正在使用的内存。驻留大小(RSIZE)是一个更准确的视图,因为它只注册在现在中映射的页面 - 尽管如果给定页面映射到多个虚拟地址(这可能也不准确)当你考虑多个进程时很常见 - 共享库有相同的物理RAM映射到使用该库的所有进程)

答案 1 :(得分:3)

尝试使用htop。无论如何,您都必须安装sudo apt-get install htopyum install htop

它将向您显示更准确的内存使用情况。

基本上,它归结为“缓冲区/缓存”。

free -m

查看缓冲区/缓存行中的空闲列,这可以更准确地表示实际可用的内容。

             total       used       free     shared    buffers     cached
Mem:          3770       3586        183          0        112       1498
-/+ buffers/cache:       1976       1793
Swap:         7624        750       6874