> CentOS > CentOS入门 >

CentOS系统下的cache Memory

关于linux系统下的cache Memory什么是Cache Memory?当你读写文件的时候,Linux内核为了提高读写性能与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存会很少。

其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有内存可用。如果你希望手动去释放Cache Memory也是有办法的。

    通过命令可以查看内存状态:

方法一:

[root@sky9896 /]# more  /proc/meminfo

MemTotal:        1921696 kB        #总物理内存

MemFree:         106016 kB     #空闲内存

Buffers:          176380 kB        #缓存,主要用于目录

Cached:           696016 kB    #缓存,用于已打开的文件

SwapCached:       33176 kB   #交换缓存

......

方法二:

[root@sky9896 /]# free  -m

         total       used       free    shared    buffers     cached

Mem:     1876      1723        152          0        173        618

-/+ buffers/cache:        931        944

Swap:         2023        138       1885

注释:

total:总物理内存
used:已使用内存
free:完全未被使用的内存
shared:应用程序共享内存
buffers:缓存,主要用于目录方面,inode值等
cached:缓存,用于已打开的文件
-buffers/cache:应用程序使用的内存大小,used减去缓存值
+buffers/cache:所有可供应用程序使用的内存大小,free加上缓存值

 其中:
total = used + free
-buffers/cache=used-buffers-cached,这个是应用程序真实使用的内存大小(931M)
+buffers/cache=free+buffers+cached,这个是服务器真实还可利用的内存大小(944M)

方法三:cacti监控的cache memory,从图中来看,缓存满了。

 

  通过下面的方法来进行清理,即执行两条命令。

[root@sky9896 /]# sync  #防止丢失数据

[root@sky9896 /]# echo 1 >/proc/sys/vm/drop_caches #释放页缓存

[root@sky9896 /]# echo 2> /proc/sys/vm/drop_caches #释放目录和节点

 [root@sky9896 /]# echo 3>/proc/sys/vm/drop_caches #清空所有缓存

执行完后,再查看内存状态,如下:

[root@sky9896 /]# free -m

           total       used       free    shared    buffers     cached

Mem:         1876       756    1119          0        0         36

-/+ buffers/cache:        719       1156

Swap:        2023        138       1885

 cacti监控的cached memory,由619.46M降到62.36M

    说明,通过手动的方式成功清除linux缓存。

(责任编辑:IT)