Linux如何计算MemFree

我想了解我的embedded式Linux内存使用情况。

通过使用top工具和进程文件/ proc / meminfo,我可以看到进程正在使用多less虚拟内存,以及系统有多less物理内存可用。 但是对于任何给定的进程看来,虚拟内存可以比使用的物理内存高得多。 由于这是embedded式系统内存交换禁用(SwapTotal = 0)

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

Solutions Collecting From Web of "Linux如何计算MemFree"

/proc/meminfo中的MemFree是好友分配器中有多少页面可用的计数。 这个好友分配器是内核中物理内存分配的基本单位, 但是有很多方式可以在需要的时候将页面返回给好友分配器 – 例如,释放空的SLAB,丢弃缓存/缓冲区RAM(即使这意味着在运行过程中使PTE无效),或作为最后的手段,交换事情。

实际上, MemFree通常只占总物理内存的5-10%,随着时间的推移,任何额外的空闲内存都将被加入缓存中。 因此,单独MemFree是一个非常不完整的内存情况。

对于给定进程的虚拟内存(VSIZE),这是指进程地址空间中所有已映射内存段大小的总和。 但是,并不是所有这些都会在物理上存在 – 有些可能会在第一次访问时被分页,因此在实际使用之前不会被注册为正在使用的存储器。 常驻大小(RSIZE)是一个更准确的视图,因为它只注册现在映射的页面 – 虽然如果给定的页面映射到多个虚拟地址,这也可能不准确(当您考虑多个进程 – 共享库具有映射到使用该库的所有进程的相同物理RAM)

尝试使用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 

+1 bdonlan我也可以推荐看一下proc(5)的manpage,它提供了关于/ proc文件系统的一些有用的信息