摘要
每次登陆Linux系统用free命令查看系统内存信息时,发现used接近于ram的大小,free列的数值都小的可怜。看起来就像是系统ram不足一样。但实际情况并非如此。
1. Linux系统借用大量空闲的ram用于disk cacheing
Linux系统会借用大量空闲的ram用于disk cacheing,以提供系统的运行速度和响应速度,这显而易见。当应用程序需要更多的内存时,系统会把disk cacheing的脏数据写入物理磁盘,然后归还ram,这里面有一套完善的机制,能够保证disk cache能迅速的归还ram。
Linux系统借用大量空闲的ram用于disk cache的机制有百利而无一害,目前没有什么方法也没有必要禁用这套机制。
2. top和free命令中显示的used列的真实含义
top和free命令显示的used列的值,跟我们通常理解的used是有点差异的,我们通常理解的used,是指“当前正在被应用程序使用的ram”,而通过
top和free命令显示的used列的值,实际上包括两部分,一部分跟我们理解的一样“
当前正在被应用程序使用的ram
”,还有一部分是“被借用做其他事情,但是如果应用程序需要,能及时归还的ram”,比如用作disk cacheing,是通过在
top和free命令显示出来的“buffers”或“cached”的值来体现的
。
3. 查看真实的free ram值
要查看系统可用的ram的值,其实很简单,对于高版本的Linux操作系统,通过free命令看"available"列:
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1504 1491 13 0 855 869
Swap: 2047 6 2041
对于低版本的Linux操作系统,通过free命令看
"-/+ buffers/cache":
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 1869 523 1346 2 22 194
-/+ buffers/cache: 306 1563
Swap: 2047 0 2047
4. 如何判断系统是否真的缺少ram
一个ram充裕的linux 系统,是这样的:
(1)free命令输出的“free”列的值接近与0;
(2)“userd”列的值接近于“total”;
(3)
"available"或
"-/+ buffers/cache"至少为
“total”的20%以上;
(4)swap的“used”值极小;
如果出现下列现象之一,就说明系统的ram不足了:
(1)
"available"或
"-/+ buffers/cache"
列的值接近与0;
(2)
swap的“used”值出现大幅增长;
(3)通过执行dmesg|grep oom-killer查询到OutOfMemory-killer相关的信息;