Linux实际内存使用计算


Linux实际内存使用情况计算


通常我们看到Linux用top命令查看系统执行状况。普遍看到Used Memory占到了将近总内存的90%,然后非常多人以为系统内存已经不足。事实上,这仅仅是Linux的为了提高文件读取的性能的内存使用机制罢了。不同于Windows,windows程序执行完后。会立即释放掉内存,把Memory降下来。而对于Linux,假设你的server内存还有足够多的空间的话,Linux会把程序执行的数据缓存起来,添加到Cache中,所以内存会不断添加。直到一定的限度为止.当超过这限度后,内核必须将脏页写回磁盘,以便释放内存。也就是说,当空暇内存低于一个特定的阈值时。内核的守护进程就会进行内存块回收.


怎样查看Linux内存使用情况呢,一般的我们能够用top命令。



我们能够看到free 的mem仅仅有763704k(700多M), 已经使用量达到:3160424k(大概3G)。而缓存的内存达到:2127220k 几乎相同2G.

看起来好像内存的确不够了,可是我们还有约2G+700M的空间可用。


我们用free -m 命令查看下内存的使用情况:


以上各參数的解释:
total:总物理内存的大小。


used:已使用内存。


free:可用内存。
Shared:多个进程共享的内存总额。


Buffers/cached:磁盘缓存的大小。
第二行:memory使用情况。


第三行(-/+ buffers/cache)。
第四行交换分区使用情况。

差别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的差别。 

这两个的差别在于使用的角度来看,第一行是从OS的角度来看,由于对于OS,buffers/cached 都是属于被使用,所以他的可用内存是746M,已用内存是3085M,当中包含。内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.

第三行所指的是从应用程序角度来看。对于应用程序来说。buffers/cached 是等于可用的,由于buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会非常快地被回收。


所以从应用程序的角度来说。可用内存=系统free memory+buffers+cached


如上例:

可用内存的计算为:2942M=746M+118M+2077M



所以,我们通过free命令查看机器空暇内存时,会发现free的值非常小。这主要是由于。在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,提高文件读取的性能,以方便下次使用。但实际上这些内存,假设须要的话,也是能够立马拿来使用的。




所以计算 可用内存=free+buffers+cached=total(3832)-used(889)






posted on 2017-07-20 15:40  ljbguanli  阅读(711)  评论(0编辑  收藏  举报