Linux实际内存使用计算

来源:互联网 发布:阿里云香港b区速度 编辑:程序博客网 时间:2024/06/04 17:49

Linux实际内存使用情况计算


通常我们看到Linux用top命令查看系统运行状况,普遍看到Used Memory占到了将近总内存的90%,然后很多人以为系统内存已经不足。其实,这只是Linux的为了提高文件读取的性能的内存使用机制罢了。不同于Windows,windows程序执行完后,会马上释放掉内存,把Memory降下来。而对于Linux,如果你的服务器内存还有足够多的空间的话,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)

阅读全文
0 0
原创粉丝点击